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

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


当前回答

优点/缺点是,我们可以在运行时创建新的对象类型,而不需要定义类(静态代码)。与大多数功能一样,这取决于开发者如何将其转化为优势或劣势。

以上是可能的,因为对象本质上是java脚本中的函数(闭包也是)。

其他回答

基于原型的编程是一种面向对象的编程风格,其中不存在类,行为重用(或基于类的语言中的继承)通过克隆作为原型的现有对象来执行。

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

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

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

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

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

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

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

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

2)不使用类

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

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

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