gpt4 book ai didi

javascript - 在没有 this 的情况下,在另一个函数中调用的函数的上下文是什么?

转载 作者:行者123 更新时间:2023-12-04 10:33:45 26 4
gpt4 key购买 nike

我有代码在哪里LivingBeing是 superType 和 Man是子类型。我已经定义了 toString()两者的方法。考虑下面的代码:

function LivingBeing() {}

LivingBeing.prototype.toString = function () {
return "hi";
};

function Man() {}
Object.setPrototypeOf(Man.prototype, LivingBeing.prototype);
Man.prototype.toString = function () {
return window.toString();
};


let m1 = new Man();
console.log(m1.toString()); // Prints [object Window]

但是如果我删除 window语境 :
function LivingBeing() {}

LivingBeing.prototype.toString = function () {
return "hi";
};

function Man() {}
Object.setPrototypeOf(Man.prototype, LivingBeing.prototype);
Man.prototype.toString = function () {
return toString(); // Window context removed now; Rest code same
};


let m1 = new Man();
console.log(m1.toString()); // Prints [object Undefined]

浏览器不应该将上下文的缺失视为窗口吗?谁的 toString()它在呼唤吗?

最佳答案

Should not the absence of context be taken as window by the browser?



没有,因为原生 toString 方法(由来自 Object.prototype 的全局对象继承)是一个严格模式函数,并且在没有传递上下文时不会回退到全局对象。

关于javascript - 在没有 this 的情况下,在另一个函数中调用的函数的上下文是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60287679/

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