this.method vs prototype.method - 有什么区别

时间:2013-08-21 07:45:20

标签: javascript

在主题中,当我们定义未来对象时(例如):

function Person(name) { 
    this.sayName = function() { 
        console.log(this.name);
    };
}

Person.prototype.sayName = function() { 
    console.log(this.name);
};

这两种方法都可用于新创建的对象。唯一的区别是'this'表达式将为每个实例创建此方法,并且'prototype'将在内存中共享(据我所知)。我遇到了两个表达方式,有趣的是第一个表达式比第二个表达式更受欢迎。

我的问题是......第一次或第二次JavaScript的正确方法是什么? (我知道两者都有效,但......代码工程标准是什么以及为什么)。

1 个答案:

答案 0 :(得分:1)

正确的方法是第二个(你还需要什么样的原型?)。

第一种方法的优点是能够获得类似私有变量的东西:如果在构造函数(function Person)中声明局部变量,那么您将能够在sayName方法中使用它因为closures。而这个变量将无法从你的“课堂”中获取。