gpt4 book ai didi

javascript - 需要有关 javascript oops 的帮助

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:37:08 25 4
gpt4 key购买 nike

var a = function () {};
a.prototype.test = function () {
alert("hello");
}

工作正常,但在下面的代码中

var b = new Object();
b.prototype.test = function () {
alert("hello");
}

我收到此错误 TypeError: Cannot set property 'test' of undefined 并且我无法获取它。

据我了解,b 已经从 Object 继承了原型(prototype)对象。所以我们应该能够按照以下方式添加一个新属性,比如 b.prototype.x = 1 。

但是 Object.prototype.x = 1 有效。

typeof Object 和 a 给出了函数,但是 b 的函数是 object

我不明白为什么 b.prototype.x = 1 不起作用

谢谢。

最佳答案

Object 是一个函数,它有一个 prototype 属性。

new Object() 创建一个对象,它没有 prototype 属性。


如果你想设置一个对象的原型(prototype),你可能意味着设置对象的构造函数的原型(prototype)。

b.constructor.prototype.test = ...

澄清一些原型(prototype)/构造函数的废话:

一个函数有一个原型(prototype),它是一个对象。它指定要添加到该函数实例的属性。

一个对象有一个构造函数,它是一个函数。它指定用于创建对象的函数。

注意函数是一个对象,所以它也有一个constructor,也就是Function

关于javascript - 需要有关 javascript oops 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704013/

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