gpt4 book ai didi

javascript - Crockford 关于构造函数调用模式的代码

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:59 24 4
gpt4 key购买 nike

下面的代码几乎与道格拉斯·克罗克福德 (Douglas Crockford) 的精湛著作《JavaScript:好的部分》第 29-30 页中的一些代码相同。唯一的区别是他像这样添加了 get_status 属性:

Quo.prototype.get_status=function() {
this.status=string;
}

我的问题是为什么他的代码运行正常,但我在下面的小改动会导致出现错误,提示 myQuo 没有 get_status 方法?

<script>
var Quo=function(string) {
this.status=string;
}
Quo.get_status=function() {
return this.status;
}
var myQuo=new Quo("confused");
alert(myQuo.get_status());
</script>

最佳答案

您将方法添加到 Quo 函数对象,而不是其原型(prototype),因此它不会被使用 new Quo() 创建的实例继承。以这种方式添加的函数有点像经典 OOP 语言中的静态方法——可以用 Quo.get_status() 调用,但不会被实例和 this 继承 将引用 Quo 函数本身。

Quo.status = "foo";
Quo.get_status(); // "foo"

关于javascript - Crockford 关于构造函数调用模式的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11662451/

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