2
   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'));

在上面的代码片段中,两种方法都在做同样的事情。在大多数情况下,两者都可以互换使用。你会选择哪一个,为什么?

4

2 回答 2

3

原型方法在所有实例之间共享,这使得对象更轻。

于 2013-03-09T16:35:33.743 回答
0

这就像 C# 或 Java 中的静态成员与实例成员。例如,非原型将无法访问对象内的参数。

例如,您将无法在其中执行此操作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());
于 2013-03-09T16:38:24.003 回答