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のインスタンスではMyClass.methodなく、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 に答える