1

我有以下脚本

<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

谢谢。

4

2 回答 2

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
}

返回一个绑定到您需要的上下文的函数!这是一个示例小提琴

请参阅Function.prototype.callMDN 上的方法。

于 2013-09-16T12:43:04.040 回答
2

由于 javascript 对象是通过引用隐式传递的,您可以像这样为自己创建快捷方式:

activity: function() {
    var p = this.defaults.purpose; // shortcut

    console.log(p.my_variable); // property
}
于 2013-09-16T12:38:27.417 回答