&引用;这";javascript中的关键字
下面的代码会返回相同的结果吗?我真的不能理解这个关键词&引用;这";javascript中的关键字,javascript,Javascript,下面的代码会返回相同的结果吗?我真的不能理解这个关键词 var o = { prop: 37, f: function () { return this.prop; } }; console.log(o.f()); // logs 37 var A = { prop: 37, f: function () { return A.prop; } }; console.log(o.f()); // logs 37
var o = {
prop: 37,
f: function () {
return this.prop;
}
};
console.log(o.f()); // logs 37
var A = {
prop: 37,
f: function () {
return A.prop;
}
};
console.log(o.f()); // logs 37
是的,这两段代码将返回相同的结果 当函数作为对象的方法调用时,它的this设置为 调用该方法的对象 在这里,调用它的对象在这两种情况下是相同的 有关的文档可能会有所帮助 (我假设您打算在第二部分中调用
A.f()
是的,它们将返回相同的结果。第二个示例可能会使两个对象实例共享同一个函数变得困难,但在许多情况下,这并不重要
除了某些必须手动设置的“绑定”或“挂接”情况外,此
可以在方法调用之前从dot确定
iamthis.callmethod()
您记录了两次o.f()
。为什么您希望得到不同的结果?简短的回答是肯定的,因为您记录了两次o.f()
。长答案也是肯定的,因为this.prop
的计算结果是o.prop
,与A.prop
完全相同。在第二种情况下,dovar B=A;A=null;console.log(B.f())
。对第一个案例执行类似的操作。您现在看到区别了吗?它们是否有任何不同,我应该选择哪种方式?是的,它们将返回相同的内容。当您在第一部分中使用this
时,您所做的就是调用o.prop。