gpt4 book ai didi

Javascript - 为什么调用方法无法正常工作?

转载 作者:行者123 更新时间:2023-11-30 07:08:14 24 4
gpt4 key购买 nike

请引用- https://jsfiddle.net/ta2u2z9a/

var o = {
x: 6
};

function a() {
this.x = 3;
this.y = function() {
alert(this.x)
}
}

var a1 = new a();
a1.y.call(); //shouldn't it alert 3?

a1.y.call(o) //is alerting 6, correct!

为什么第一个警报,警报未定义?它不应该提醒 3 吗?

最佳答案

.call() 的第一个参数需要是方法的“所有者对象”:

a1.y.call(a1);

这是怎么回事?

当您“自然地”调用方法时(例如 a1.y()),this 的值会自动设置为对象(例如 a1 )。

当函数 not 用作方法时(例如 var x = a1.y; x();),this 的值> 是全局/窗口对象,或者是 null(取决于您是否处于“严格模式”)。

.call() 方法(它是函数的方法)是一种显式设置this 值的方法,而不是让它自动分配。使用 .call() 时,您必须自己提供 this 值作为第一个参数。

关于Javascript - 为什么调用方法无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295056/

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