-6

可能会出现以下情况吗?

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).

4

3 回答 3

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检索实例变量已经需要 的值。

于 2012-06-20T21:29:36.947 回答
1

就像...分配?

var $this = this;

编辑:如果你的意思是这样的:

var obj = {
    selfReference: this
};

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

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

不过,我不确定您为什么要首先这样做。

于 2012-06-20T21:29:11.680 回答
1

存储this在 Javascript 中非常频繁地完成,以避免函数范围的问题。通常用于存储的变量this被称为that

var that = this

您还可以使用设置您正在调用的函数的 this 对象

myFunction.call(myCustomThisReference, param1, param2)

或者

myFunction.apply(myCustomThisReference, [param1,param2]

查看电话申请了解更多详情

于 2012-06-20T21:31:17.757 回答