Javascript的主要优势之一据说是它是一种基于原型的语言。

但是Javascript是基于原型的,这意味着什么?为什么这是一个优势?


当前回答

读完所有答案后,这是结论

1)继承,直接从其他对象继承对象

2)不使用类

3)也称为基于实例的编程或面向无类原型的编程

4)行为重用通过克隆作为原型的现有对象来实现

5)作为模板的对象从新对象中获取初始属性

其他回答

如果您只是在运行时使用对象而不是在编译时使用类来构建新对象,那么就有可能在不了解对象的任何细节的情况下扩展对象。当然,根据使用情况,它可能很快成为一个缺点。我在这里没有对语言做任何假设,所以它适用于javascript以外的非动态语言。

myobject.prototype=unkownobject;
myobject.newproperty=1;

你可以从任何地方得到这个物体;您自己的代码,来自网络,来自数据库,来自外部链接等等。

注意,语言不需要像javascript那样实现原型继承。在javascript中,原型对象只是在继承者之间共享,它的属性也是如此。另一种方法是将原型的所有属性复制到新对象中。每种方法在不同的情况下都有其优点。我更喜欢第二种,但这不是javascript所做的。

内存保存是JS中原型继承的好处之一。在像Java这样的语言中,对象会生成父类的实例变量和方法的自己的副本,而在JS中,“super”对象为每个继承自它的“子”对象提供了对其变量和方法的访问,而不需要重新创建它们。

无需声明类结构,您可以创建相同类型的对象,并在任何时候使用对象的原型将其添加到定义中。 它比正常的做事方式更灵活。

基于原型的语言,没有区分类和对象:它只是有对象。基于原型的语言具有原型对象的概念,原型对象用作模板,从中获取新对象的初始属性。任何对象都可以指定自己的属性,无论是在创建时还是在运行时。此外,任何对象都可以作为另一个对象的原型相关联,从而允许第二个对象共享第一个对象的属性。

读完所有答案后,这是结论

1)继承,直接从其他对象继承对象

2)不使用类

3)也称为基于实例的编程或面向无类原型的编程

4)行为重用通过克隆作为原型的现有对象来实现

5)作为模板的对象从新对象中获取初始属性