gpt4 book ai didi

Javascript:从返回父类(super class)实例的函数设置子类原型(prototype)的好处?

转载 作者:行者123 更新时间:2023-11-28 00:54:56 24 4
gpt4 key购买 nike

我最近一直在回归 JavaScript 原理的基础知识,并在扩展我感兴趣的类时发现了一些细微的变化。我知道有很多选择,但我只专注于其中一个,以缩小这个问题的范围。

使用函数扩展类来设置子类原型(prototype):

function Shape(){};

function Square(){
Shape.call(this, arguments);
this.sides = 4;
}

function heir(p){
function f(){};
f.prototype = p;
return new f();
}

Square.prototype = heir(Car.prototype);

上面的方式和下面这样设置子类原型(prototype)有什么区别?

Square.prototype = new Car();

使用 heir 的示例函数取自 O'Reilly 的 Javascript“权威指南”一书,所以我想知道这样一本像样的书使用上面的例子而不是更简单的第二个例子是否有原因?

最佳答案

您正在使用 Polyfil 进行 Object.create

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FObject%2Fcreate

  Child.prototype = Object.create (Parent.prototype);

好处是:

1:父构造函数可能需要传递其他复杂对象,而这些对象在声明 Child 时不可用。

2:父实例特定成员不在 Child.prototype 上。尽管 Child 构造函数中的 Parent.call(this... 会隐藏这些成员,但它们仍然没有必要在那里。

更多信息请点击:Prototypical inheritance - writing up

关于Javascript:从返回父类(super class)实例的函数设置子类原型(prototype)的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26337363/

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