gpt4 book ai didi

javascript - JavaScript 中的这个运算符

转载 作者:行者123 更新时间:2023-12-04 02:15:11 25 4
gpt4 key购买 nike

假设我有这样的 JavaScript 代码

      myClass = function(){
function doSomething(){
alert(this); // this1
}
}
alert(this); //this2

这两个“this”对象指的是什么??

最佳答案

全局执行上下文中的this值,指的是全局对象,例如:

this === window; // true

对于函数代码,它实际上取决于您如何调用函数,例如,this 值在以下情况下被隐式设置:

调用没有基对象引用的函数:

myFunc();

this 值也将引用全局对象。

调用绑定(bind)为对象属性的函数:

obj.method();

this 值将引用 obj

使用new运算符:

new MyFunc();

this 值将引用一个新创建的对象,该对象继承自 MyFunc.prototype

此外,您可以在调用函数时使用 call 显式设置该值或 apply方法,例如:

function test(arg) {
alert(this + arg);
}
test.call("Hello", " world!"); // will alert "Hello World!"

callapply 的区别在于,使用apply,您可以使用数组或arguments 对象,例如:

function sum() {
var result = 0;
for (var i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}

var args = [1,2,3,4];
sum.apply(null, args); // 10

// equivalent to call
sum(1,2,3,4); // 10

如果callapply 的第一个参数值为nullundefined,则this 值将引用全局对象。

(请注意,这将在未来发生变化,在 ECMAScript 5 中,callapply 传递 thisArg 值而不修改)

关于javascript - JavaScript 中的这个运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320677/

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