gpt4 book ai didi

javascript - 使用 'this' 在对象中创建值

转载 作者:行者123 更新时间:2023-11-28 15:30:47 26 4
gpt4 key购买 nike

var obj = {
name : 'object',
itis : this.name,
}

为什么它是未定义的?当我查看对象的值时,它的值是空白的。谢谢。

最佳答案

代码

var obj = { name: 'object';
itis: this.name };

完全等同于

var obj = {};
obj.name = 'object';
obj.itis = this.name;

换句话说,this 引用外部作用域的当前this,与新创建的对象无关。

事情有所不同

var obj = {};
obj.name = 'object';
obj.itisf = function(){ return this.name; }

console.log(obj.itisf()); // Shows "object"

之所以发生这种情况,是因为this执行函数时,将成为对象。

一个简单的合理化是,当您使用 . 从对象获取函数后立即调用该函数时,该函数中的 this 将成为该对象。该规则还暗示在 Javascript 中:

obj.f();

var ff = obj.f;
ff();

不要做同样的事情,因为在第一种情况下,只有在执行f中的代码期间,this的值才会成为对象。在第二种情况下,this 将是全局对象。

关于javascript - 使用 'this' 在对象中创建值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27456494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com