javascript属性存储此

时间:2012-06-20 21:26:47

标签: javascript jquery

以下是可能的吗?

var obj = {
    data:'some data',
    init:function(){
        console.log(this.data);
        console.log(obj.data);
    }
}
obj.init();

此处,console.log(this.data)console.log(obj.data)都返回相同的值。

是否可以将this存储在某个变量中,例如我在'some data'中存储data

假设我们将this存储在$this中。然后,console.log($this.data)应该像console.log(this.data)一样工作。

3 个答案:

答案 0 :(得分:2)

我不知道你为什么要做你要问的事,但是你可以这样做:

var obj = {
    data:'some data',
    init:function(){
        this.self = this;
        console.log(this.data);
        console.log(obj.data);
        console.log(this.self);
    }
}
obj.init();

如果你解释为什么要这样做,我们可能会更恰当地提出建议,没有理由将this的值保存在实例变量中,因为this的值是已经需要以便检索实例变量。

答案 1 :(得分:1)

如......分配?

var $this = this;
编辑:如果您的意思是这样的话:

var obj = {
    selfReference: this
};

然后不,那是不可能的。你必须在之后分配它:

var obj = {};
obj.selfReference = obj;

我不知道为什么你最初想要这样做。

答案 2 :(得分:1)

在Javascript中经常存储this以避免功能范围问题。通常,用于存储this的变量称为that,如下所示:

var that = this

您还可以使用

设置要调用的函数的this对象
myFunction.call(myCustomThisReference, param1, param2)

myFunction.apply(myCustomThisReference, [param1,param2]

有关详细信息,请参阅callapply