gpt4 book ai didi

javascript - 对象方法引用对象属性的两种方式之间的区别

转载 作者:行者123 更新时间:2023-11-28 12:57:38 25 4
gpt4 key购买 nike

有两种方法可以让对象方法引用对象属性:

let i = {a: 'apple', b: function(){return i.a}}
let j = {a: 'apple', b: function(){return this.a}}

console.log(i.b()) // apple
console.log(j.b()) // apple

这两种引用对象属性的方法有何优缺点?

最佳答案

它们的含义不同。第一个返回作用域内某个变量 ia 属性。事实上,该对象也被命名为 i 意味着它按预期工作。但这并不能保证。例如:

let i = {a: 'apple', b: function(){return i.a}}
let j = i
i = {a: "potato"}

console.log(j.b()) // apple or potato?

只要您希望函数查看作用域,找到 i 并返回它的 a 属性,那么这就会按预期工作。但这并不意味着,在该函数中返回对象的 a 属性。

然后第二个确实意味着只要使用i.b()调用它,但是this不引用该对象所在的对象函数被定义——它的值由函数调用的上下文决定。例如

let i = {a: 'apple', b: function(){return this.a}}
let j = {a: 'potato'}
j.b = i.b

console.log(j.b()) // apple or potato

一个并不比另一个更好,它们是不同的想法并且可以提供不同的功能。

关于javascript - 对象方法引用对象属性的两种方式之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53846368/

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