コンストラクターを作成した後、コンストラクターにメソッドを追加する方法を理解しようとしています。
以下のコードでは、Personのプロトタイププロパティを使用して、Personの変数にアクセスできる新しいパブリックメソッドを追加することはできません。(プロトタイププロパティにアタッチされた関数は、メイン関数の変数を閉じないでください)。
最初の方法とは異なり、2番目の方法は機能します-Person2.これらは特権メソッドと呼ばれているようです-http ://www.crockford.com/javascript/private.html。
function Person(name, age){}
Person.prototype.details = function(){
return "name: "+name+", age: "+age;
};
function Person2(name, age){
this.details = function(){
return "name: "+name+", age: "+age;};
}
var per1 = new Person("jim", 22);
var per2 = new Person2("jack", 28);
per1.details();
//=> ReferenceError: age is not defined
per2.details();
//=> "name: jack, age: 28"