簡體   English   中英

在對象文字中使用“ with”?

[英]Using “with” in object literal?

是否有可能在javascript中使用“ with”之類的東西-如...

var test = {
    vars: {
        customer: {
            Name: '',
            Address: '',
            Town: ''
        }
    },

    Init: function () {
        with this.vars.customer {
            Name = 'Mike';
            Address = 'Union Square 2';
            Town = 'San Francisco'; 
        }       
    }
} 

謝謝

更新:

我不喜歡這種語法:

Init: function () {
            this.vars.customer.Name = 'Mike';
            this.vars.customer.Address = 'Union Square 2';
            this.vars.customer.Town = 'San Francisco'; 
        }

很亂

this.vars.customer = {
   Name: 'Mike';
   Address: 'Union Square 2';
   Town: 'San Francisco'; 
}   

如果是關於設置屬性的,也許您可​​以做這樣的事情。 它遠非with替代品,但它可能有其用途,而且沒有含糊with

function mergeObject(obj, into){
    for (var key in obj){
        if (obj.hasOwnProperty(key)){
            into[key] = obj[key];
        }
    }
}

var o = {test: 'Hello', test2: 'world'};
// Add/set properties to o.
mergeObject({foo: 'foo', bar: 'FOO'}, o);


alert(o.test + o.foo);

http://jsfiddle.net/a2BTY/

JavaScript中的“ with”關鍵字是IS。

不建議這樣做,因為如果不小心,它會創建模糊的變量作用域。 我認為這里給出的其他答案是更好的JS編碼實踐

用法示例

x = { subObj: {a: 100, b: 200} };

with (x.subObj) { 
   console.log(a); // should show 100
   b = "what";  // should assign x.subObj.b to be "what now"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM