gpt4 book ai didi

javascript - 代码输出一个数字而不是未定义的?

转载 作者:行者123 更新时间:2023-12-05 07:22:42 25 4
gpt4 key购买 nike

根据我的理解,当我调用 hi() 时,下面的代码应该输出 undefined 但它记录了一个数字。我正在使用 Chrome 。有人可以详细说明为什么会这样吗?提前致谢。

代码截图:

enter image description here

const obj = {
name: "abc",
sayHi: function() {
console.log(this.name)
}
}

obj.sayHi();
let hi = obj.sayHi;
hi();

最佳答案

当你调用obj.sayHi()时,this引用obj

当您调用 hi() 时,this 引用 window 对象。

如果你想让thisundefined,你需要使用"use strict";

如果你想让this成为obj,你可以bind函数到obj

演示

"use strict"

const obj = {
name: "abc",
sayHi: function() {
console.log(this)
}
}

obj.sayHi();

let hi1 = obj.sayHi;
hi1();


let hi2 = obj.sayHi.bind(obj);
hi2();

关于javascript - 代码输出一个数字而不是未定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56434125/

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