gpt4 book ai didi

javascript - subclass.prototype = new superclass()与subclass = new superclass()

转载 作者:数据小太阳 更新时间:2023-10-29 04:56:47 29 4
gpt4 key购买 nike

我一直在实例化javascript中的子类,使用

object = new class ()

但我注意到有人实例化使用
object.prototype = new class ()

问题:有什么区别?在我看来,后者似乎更尊重继承链,因为如果 class ()包含一堆“ this.variable = x”语句,并且object是您要从其继承的对象而不是类的实例,则可以将这些变量准确地分配给object的原型(prototype),而不是像前一种情况那样针对对象本身。所以实际上是这样吗?
object = new class () |vs.| subclass.prototype = new superclass ()

但是,程序中的功能都相同吗?

附带的问题:另外,我对 new运算符的实际作用还不清楚。在我看来,要做的只是创建一个空对象并为其分配proto属性?

最佳答案

区别在于,当您执行以下操作时:

var subclass = new superclass();

您正在创建 superclass的实例。 subclass只是可变的。您没有在创建子类(即,使 subclass继承 superclass)。
在后一个示例中,假设子类是一个函数,则是说子类的所有新实例都应继承(即子类) superclass

所以:
function superclass() {this.stuff="stuff";}
function subclass() {}
subclass.prototype = new superclass();
alert(new subclass().this); // pops up "stuff"

是原型(prototype)继承。

至于 new运算符,它用于创建内置对象和用户定义类型的实例。用户定义的类型只是一个函数。

编辑:
当我在上面写该子类使用原型(prototype)继承继承父类(super class)型时,我的意思是子类的所有新实例都从 的一个实例(特别是supertclass的实例)继承,而不是从 superclass类型/函数本身继承。

关于javascript - subclass.prototype = new superclass()与subclass = new superclass(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2117614/

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