原型定义函数和类属性有什么区别?

按照我的代码,
苹果是通过原型来定义function的。
香蕉是按类属性定义的function。

var Apple = function(){} Apple.prototype.say = function(){ console.debug('HelloWorld'); } var Banana = function(){ this.say = function(){ console.debug('HelloWorld'); } } var a = new Apple(); var b = new Banana(); a.say(); b.say(); 

这些不同吗?

当您创buildApple的多个实例时,内存中仍然只有一个say()实例。 但是,当您创build多个香蕉实例时,最终会创build大量的say()函数实例。

这就是为什么原型可以节省内存。 您还可以避免创build和分配say()函数的处理成本。

此外,如果您更改父对象的属性,如果该子项不replace该属性,则可以从该子项中看到更改。

原型成员就像成员类成员就像类成员,而当你用另一种方式定义它,而不是类成员。 所以,如果你正在创造苹果的许多对象,所有将共享相同的function,而在香蕉的情况下,每个对象将有自己的function副本。 在JavaScript中将原型想象成静态的,在C#中。