gpt4 book ai didi

成员函数中的 Javascript `this` 对象 == `window`

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:59:54 25 4
gpt4 key购买 nike

在我的一些 Javascript 对象中,我发现我的 this 指针是正确的 - 这些是 new Func() 类型的对象 - 在创建时,但在分配的方法中它可能是错误的。

function Confused() {
console.log("checking",this==window,"is always false");
this.method = function() {
console.log("checking",this==window,"is true for some funcs but not others");
};
};

在对 (new Confused()).method() 的一些调用中 - 它似乎丢失了它的 this 指针。这种情况发生的次数似乎取决于功能,而不是随机的;这是代码中有关我如何创建导致此问题的类的内容。

在线示例位于 http://williame.github.com/barebones.js/和成员(member)回调G3D._file_loaded有时调用时有错误的 this 指针。

为什么,我该如何解决?

最佳答案

在 Javascript 中有 4 种使用函数的方式这些中的每一个所做的是改变 this 的内容:

  • 函数调用:this = 全局对象(浏览器中的窗口)
  • 方法调用:this = 调用它的对象。
  • 构造函数调用:this = 您正在创建的新对象。
  • 调用/应用调用:this = 你传递的对象。

在你的情况下 this == window 当你直接调用函数时 (Confused()) 但如果你调用使用 new (new Confused()) 那么它将是您正在创建的新对象。

关于成员函数中的 Javascript `this` 对象 == `window`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091173/

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