gpt4 book ai didi

javascript - 使用 javascript 进行 OOP 编程 : Making sure that this points to the right thing regardless of how the object is instantiated

转载 作者:行者123 更新时间:2023-12-02 14:52:59 25 4
gpt4 key购买 nike

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

Making sure that this points to the right thing regardless of how the object is instantiated can be difficult. However, there is a simple idiom to make this easier.

var Person = function(firstName) {
if (this instanceof Person) {
this.firstName = firstName;
} else {
return new Person(firstName);
}
}

为什么我们要返回新的 Person?

else 情况实际上是如何发生的?

最佳答案

Person 只是一个常规函数。不同之处在于它的调用方式:

1)它可以作为构造函数调用

 var p = new Person('Bill Gates');

构造函数中的this上下文是Person的一个实例。 this instanceof Person 计算结果为 true
当作为构造函数调用该函数时,会自动返回新创建的对象。

2) 作为常规函数调用

var p = Person('Bill Gates');

this 是严格模式下的 Window 对象或 undefinedthis instanceof Person 的计算结果为 false
然而,为了仍然通过简单调用接收对象,需要手动调用 new Person(firstName) 以返回正确的对象。

查看this post中的更多详细信息.

关于javascript - 使用 javascript 进行 OOP 编程 : Making sure that this points to the right thing regardless of how the object is instantiated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36028385/

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