在函数中添加范围引用的最佳方法

时间:2018-01-14 01:34:19

标签: javascript performance scope closures

大家好,添加范围obj引用函数的最佳方法是什么。

我的例子,我有一个超级对象。

var SuperObj = new PIXI.sprite();

SuperObj.action = new subObj();

SuperObj.action.actionFunction = function(){// need to acces to SuperObj};

当我将函数stuf添加到动作时,我需要为其父级添加范围引用。

所以我需要在subObj

的函数中使用SuperObj

所以在我的背景下,最好这样做?

var motion = this._motions[motionName];
var action = (function(motion,actions){

    return function(){
        console.log('actions: ', actions); // by closures
    };
})(motion,this); // this scoped by closures in function
this.actions.add_newAction(action,motionName,actionName);

或者像这样

var motion = this._motions[motionName];
var action = (function(motion){

    return function(){
        console.log('actions: ', this.scoped ); // by scope obj
    };
})(motion); action.scoped = this;
this.actions.add_newAction(action,motionName,actionName);

它的最佳表现方式,或者你有另一种建议方式? 我需要性能最佳和最功能的方式。 感谢

1 个答案:

答案 0 :(得分:0)

如果它需要访问超级obj,它可能应该在超级obj中。

在超级课程中,您可以将孩子作为财产进行访问。

所以,方法应该是这样的:

SuperObj.addActionFunction = function(){// need to acces to SuperObj};

actions是一个(动作类的)列表,基于上面的内容,而不是superobj的直接属性,如果你需要访问该列表,另一个原因应该是superobj。