var Person = function(name){
this.name = name;
this.sayName = function () {
console.log("My Name is "+ this.name);
}
}
var nitin = new Person("Nitin");
nitin.sayName(); // My Name is Nitin
// Codebreak
var Person = function(name){
this.name = name;
}
Person.prototype.sayName = function (){
console.log("My Name is "+ this.name);
}
var nitin = new Person("Nitin");
nitin.sayName(); // My Name is Nitin
我正在通过JS继承,但是对于上述两种方法,结果都是相同的。因此,我在这里感到困惑,该采取哪种方法?为什么?
答案 0 :(得分:3)
前者有一个空的原型,只包含构造函数。后者具有行为(sayName)的原型。
不可能从第一个示例继承行为,因为它没有原型,而在第二个示例中,原型可以传递并由此继承。
此外,从内存管理/代码执行的角度来看,原型更加有效。 V8(Google的JavaScript解释器)和大多数其他JS解释器将在解释原型时从原型构造可重用的代码。这既节省了空间,不需要多个不同的功能,又节省了每次需要时都不需要构造它们的速度。