gpt4 book ai didi

Javascript 闭包, 'this' 关键字和变量命名空间

转载 作者:行者123 更新时间:2023-12-03 10:02:48 25 4
gpt4 key购买 nike

我正在尝试了解 this关键字有效。

本文The this keyword

“在 JavaScript 中,this 总是指我们正在执行的函数的“所有者”,或者更确切地说,指函数是其方法的对象。”

function someClosure() {
var myVal0, myVal1, myVal2;

init = function (myVal0, myVal1, myVal2) {

myVal0 = myVal0;
this.myVal1 = myVal1;
this.myVal2 = myVal2;

};

getMyVal0 = function() { return myVal0 };
getMyVal1 = function() { return myVal1 }
getMyVal2 = function() { return this.myVal2 }
};

我推测 getMyVal0undefinedinit() 之后由于命名冲突(分配不明确)而被调用。

但是(在调用 init() 之后)为什么 getMyVal1返回 undefined ?对myVal1的引用不应该含糊不清。 Javascript 是否需要显式使用 thisgetMyVal2返回预期值,但再次令我惊讶的是我需要明确的 this .

请澄清此行为。

最终,我试图在初始化成员变量时为函数参数建立一个命名约定。按照行业惯例,IRR 是 IRR,似乎 this应该允许我避免为一个变量想出两个名称(而不总是用 this 引用成员变量。)做我想做的事情的约定是什么?

最佳答案

好吧,那篇文章中的 PPK 完全不正确。 this 指针的值随每次函数调用 重新确定。 JavaScript 中没有“方法所有权”这样的东西。当作为对象属性引用的结果调用方法时,this 指针会获得一个值,这是真的,但同一个方法可以是许多不同对象的属性。

除此之外,了解构造函数中的局部变量与 this 引用的对象的对象属性完全不同是很重要的。也就是说,

function Constructor() {
var x, y;

x = "whatever";
}

在该代码中,变量“x”和“y”是局部变量,不是对象的属性。

关于Javascript 闭包, 'this' 关键字和变量命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11780478/

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