gpt4 book ai didi

没有原型(prototype)的Javascript继承

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

请引用-http://jsfiddle.net/sf4oaxun/

function a() {
this.say = function () {
alert("hello");
};
}

a.prototype.what = function () {
alert("234234");
};

function b() {}

//b.prototype = Object.create(a);
//b.prototype = a;

var b1 = new b();

b1.say();
  1. 这 2 行注释有不同吗?
  2. 为什么说没有被调用,并且在使用任一注释行时出错(请取消注释)

    b.prototype = Object.create(a);
    b.prototype = a;
  3. 添加了快速问题 - 如果“b”使用 b.prototype = Object.create(a.prototype) 从“a”继承,那么 b 的实例将无法调用 a 中未定义的任何方法a的原型(prototype)?请引用 - jsfiddle.net/sf4oaxun/3

最佳答案

say 仅在函数 a 的构造函数中可用。它不会被继承。

这就是 b1.say() 不可用的原因。

还有一点,这两种说法都是错误的。

应该是

b.prototype = Object.create(a.prototype)

这样 what 属性将被 b 继承。

另一种做法是

b.prototype = a.prototype

但在这种情况下,对 b.prototype 的任何更改都会影响 a.prototype

如果您还想继承构造函数属性,那么

b.prototype = new a();

<强> DEMO

关于没有原型(prototype)的Javascript继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778767/

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