gpt4 book ai didi

javascript - 将 'this' 分配给另一个变量时,javascript 的 "method"绑定(bind)如何工作?

转载 作者:行者123 更新时间:2023-12-02 17:22:19 25 4
gpt4 key购买 nike

考虑:

function Thing() {
this.prop = null
}

Thing.prototype.whoIsThis = function() {
console.log(this)
}

a = new Thing()
a.whoIsThis() // logs '> Thing {...}'

f = a.whoIsThis
f() // logs '> Window {...}'

因此,this 未绑定(bind)到第二次调用中的 Thing。在这种情况下 this 如何工作? a.whoIsThis 不是 Thing 的“方法”吗,无论它分配给什么变量?

最佳答案

当你说a.whoIsThis时,它只会引用函数对象。函数对象不会引用它所附加的对象。但是当您调用该函数时,JavaScript 会动态决定当前对象并将其设置为函数内的 this

这种动态性允许我们在运行时使用任何对象作为当前对象。

但是当你只是调用一个函数对象,没有任何对象引用时,默认情况下,JavaScript 会将 this 设置为全局对象(浏览器中的 window 对象)并在严格模式下,this 将被设置为 undefined

关于javascript - 将 'this' 分配给另一个变量时,javascript 的 "method"绑定(bind)如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23820691/

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