JavaScript属性存储它

javascript attributes store this

本文关键字:存储 属性 JavaScript      更新时间:2023-09-26

可能出现以下情况吗?

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)一样工作。

我不知道

你为什么要做你所要求的,但是是的,你可以做到:

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 的值。

如...分配?

var $this = this;

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

var obj = {
    selfReference: this
};

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

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

不过,我不确定你为什么要这样做。

在Javascript中存储this非常频繁,以避免函数作用域出现问题。通常,用于存储this的变量称为that,如下所示:

var that = this

还可以使用

myFunction.call(myCustomThisReference, param1, param2)

myFunction.apply(myCustomThisReference, [param1,param2]

查看电话并申请更多详情