var MyClass = function() {};
MyClass.method = function (name, age) {
return "My name is " + name + " and I'm " + age + " years old";
}
MyClass.prototype.method = function (name, age) {
return "My name is " + name + " and I'm " + age + " years old";
}
console.log(MyClass.method('David','30'));
var instance = new MyClass();
console.log(instance.method('john', '23'));
在上面的代码片段中,两种方法都做同样的事情。在大多数情况下,两者都可以互换使用。你会选择哪一个?为什么?
答案 0 :(得分:3)
原型方法在所有实例之间共享,这使得对象更轻。
答案 1 :(得分:0)
它就像C#或Java中的静态成员vs实例成员。例如,非原型将无法访问对象中的参数。
例如,您无法在MyClass.method
内执行此操作,因为您在MyClass上调用它,而不是 MyClass实例。 (jsFiddle)
var MyClass = function(name, age) {
this.name = name;
this.age = age;
};
MyClass.prototype.method = function () {
return "My name is " + this.name + " and I'm " + this.age + " years old";
}
var instance = new MyClass('David', 10);
console.log(instance.method());