我有以下脚本
<script>
var Obj = {
purpose_1: {
defaults: {
purpose:{ my_variable:"Test" }
},
activity: function() {
console.log( Obj.purpose_1.defaults.purpose.my_variable );
}
},
purpose_2: {
}
}
Obj.purpose_1.activity();
</script>
我正在访问my_variable
并从控制台
Test
console.log( Obj.purpose_1.defaults.purpose.my_variable );
有没有像
那样的捷径 this.my_variable
访问my_variable
而非此长路径
Obj.purpose_1.defaults.purpose.my_variable
感谢。
答案 0 :(得分:3)
activity: function () {
return function() {
//this now refers to Obj.purpose_1.defaults.purpose
console.log(this.my_variable);
}.call(Obj.purpose_1.defaults.purpose);
// call overrides the context in which the function is executed
}
返回绑定到您需要的上下文的函数!这是sample fiddle。
请参阅MDN上的Function.prototype.call
方法。
答案 1 :(得分:2)
由于javascript对象通过引用隐式传递,您可以像这样为自己创建快捷方式:
activity: function() {
var p = this.defaults.purpose; // shortcut
console.log(p.my_variable); // property
}