사용하는 한 차이가 없습니다. 그러나 성능 측면에서 볼 때 전자의 방법이 바람직합니다. 그것은 그러나 this
, prototypePony1
및 prototypePony2
모두 공유의 동일한 복사본을 사용하여 정의 된 이후, thisPony1
및 thisPony2
모두의 bite
기능의 자신의 사본을 얻을 위의 예에서
var prototypePony1 = new Pony();
var prototypePony2 = new Pony();
var thisPony1 = new Pony2();
var thisPony2 = new Pony2();
prototypePony1.hasOwnProperty('bite'); //returns false
prototypePony2.hasOwnProperty('bite'); //returns false
thisPony1.hasOwnProperty('bite'); //returns true
thisPony2.hasOwnProperty('bite'); //returns true
Pony.prototype.bite = function() { alert('Nomnomnom!'); };
Pony2.prototype.bite = function() { alert('Nomnomnom!'); };
prototypePony1.bite(); //alerts 'Nomnomnom!'
prototypePony2.bite(); //alerts 'Nomnomnom!'
thisPony1.bite(); //alerts 'Chomp!', instance property is accessed first
delete thisPony2.bite;
thisPony2.hasOwnProperty('bite'); //returns false
thisPony2.bite(); //alerts 'Nomnomnom!'
:의 당신의 예를 조금 확장 할 수 bite
Pony
의 생성자.
Pony2에서 bite
프로토 타입을 정의한 후에는 thisPony1
에서 인스턴스 속성에 계속 액세스합니다. 새로 정의 된 프로토 타입 속성이 thisPony2
에있는 인스턴스 속성을 삭제하기 전까지는 아닙니다.
개체 메서드를 정의하는 방법에 대한 자세한 내용은 here을 참조하십시오.
더 : http://stackoverflow.com/q/9772307/218196, http://stackoverflow.com/q/ 4386708/218196 –