Javascript的主要优势之一据说是它是一种基于原型的语言。
但是Javascript是基于原型的,这意味着什么?为什么这是一个优势?
Javascript的主要优势之一据说是它是一种基于原型的语言。
但是Javascript是基于原型的,这意味着什么?为什么这是一个优势?
当前回答
如果您只是在运行时使用对象而不是在编译时使用类来构建新对象,那么就有可能在不了解对象的任何细节的情况下扩展对象。当然,根据使用情况,它可能很快成为一个缺点。我在这里没有对语言做任何假设,所以它适用于javascript以外的非动态语言。
myobject.prototype=unkownobject;
myobject.newproperty=1;
你可以从任何地方得到这个物体;您自己的代码,来自网络,来自数据库,来自外部链接等等。
注意,语言不需要像javascript那样实现原型继承。在javascript中,原型对象只是在继承者之间共享,它的属性也是如此。另一种方法是将原型的所有属性复制到新对象中。每种方法在不同的情况下都有其优点。我更喜欢第二种,但这不是javascript所做的。
其他回答
基于原型的语言,没有区分类和对象:它只是有对象。基于原型的语言具有原型对象的概念,原型对象用作模板,从中获取新对象的初始属性。任何对象都可以指定自己的属性,无论是在创建时还是在运行时。此外,任何对象都可以作为另一个对象的原型相关联,从而允许第二个对象共享第一个对象的属性。
无需声明类结构,您可以创建相同类型的对象,并在任何时候使用对象的原型将其添加到定义中。 它比正常的做事方式更灵活。
如果您只是在运行时使用对象而不是在编译时使用类来构建新对象,那么就有可能在不了解对象的任何细节的情况下扩展对象。当然,根据使用情况,它可能很快成为一个缺点。我在这里没有对语言做任何假设,所以它适用于javascript以外的非动态语言。
myobject.prototype=unkownobject;
myobject.newproperty=1;
你可以从任何地方得到这个物体;您自己的代码,来自网络,来自数据库,来自外部链接等等。
注意,语言不需要像javascript那样实现原型继承。在javascript中,原型对象只是在继承者之间共享,它的属性也是如此。另一种方法是将原型的所有属性复制到新对象中。每种方法在不同的情况下都有其优点。我更喜欢第二种,但这不是javascript所做的。
基于原型的编程是一种面向对象的编程风格,其中不存在类,行为重用(或基于类的语言中的继承)通过克隆作为原型的现有对象来执行。
优点/缺点是,我们可以在运行时创建新的对象类型,而不需要定义类(静态代码)。与大多数功能一样,这取决于开发者如何将其转化为优势或劣势。
以上是可能的,因为对象本质上是java脚本中的函数(闭包也是)。