Javascript 文字对象表示法 This 与对象名称
我有一个像这样的对象文字:
var test = {
one: function() {
},
two: function() {
this.one(); // call 1
test.one(); // call 2
}
};
在 two
函数中调用(使用对象文字名称与使用 this
)有什么区别?
I have an object literal like this:
var test = {
one: function() {
},
two: function() {
this.one(); // call 1
test.one(); // call 2
}
};
What is the difference between the calls in the two
function (using the object literal name versus using this
)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
test
始终在two
函数的闭包内绑定到变量test
,而this
取决于函数的方式被称为。如果使用常规对象成员访问语法调用该函数,则this
将成为拥有该函数的对象:您可以使用
Function.prototype 更改
:this
的值.call但是,无论函数如何调用,
test
的值在two
函数内部都保持不变。test
is always bound within the closure of thetwo
function to the variabletest
whereasthis
depends on how the function is called. If the function is called using the regular object member access syntax,this
becomes the object owning the function:You can change the value of
this
by usingFunction.prototype.call
:But the value of
test
remains the same inside thetwo
function, regardless of how the function is invoked.不同之处在于,第二个调用将始终绑定到测试对象,而这可能会反弹到某个其他对象:
The difference is that the second call will always be bound to the test object, whereas this might be rebound to some other object: