对象方法与原型方法

时间:2013-03-09 16:34:34

标签: javascript

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

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

2 个答案:

答案 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());