0

是不是可以在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'; 
        }

很乱

4

2 回答 2

0
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/

于 2013-08-02T19:47:43.690 回答
0

JavaScript 中的“with”关键字是。

不推荐,因为如果不小心,它会创建模棱两可的变量范围。我认为这里给出的其他答案是更好的 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"
}
于 2013-08-02T19:59:05.600 回答