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

| 按照我的代码, 苹果是通过原型定义功能。 香蕉是通过类属性定义功能的。
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();
这些不同吗?     
已邀请:
当创建多个Apple实例时,内存中仍将只有一个only1实例。但是,当您创建多个Banana实例时,最终将创建许多
say()
函数实例。 这就是原型节省内存的原因。您还可以避免创建和分配“ 1”功能的处理成本。 同样,如果更改父对象的属性,则如果子对象没有替换该属性,则从子对象可见更改。     
原型成员就像类membeprototype成员就像类成员,而当您以其他方式定义它时,它不是类成员。因此,如果您要创建许多Apple对象,则所有对象都将共享相同的功能,而在使用香蕉的情况下,每个对象将具有自己的功能副本。  将javascript中的原型视为C#中的静态。     

要回复问题请先登录注册