나는 방금 읽고 java script prototype programming
, 단지 하나의 작은 코드를 시도했습니다.
function Ninja(){
this.swingSword = function(){
return true;
};
}
//override the prev one
Ninja.prototype.swingSword = function(){
return false;
};
var ninja = new Ninja();
console(ninja.swingSword());
그러나 나는 이것의 OP가 false
, 불행히도 출력을 주었다고 true
생각했습니다. 두 번째 방법은 첫 번째 방법을 무시하지 않습니다. 왜?
Ninja.prototype.swingSword()
JsFiddle 만이 올바른 재정의를 제공합니다 .....
그래서 object(ninja)
여기서 만드는 목적은 무엇 입니까?
프로토 타입에서 함수를 정의하면 해당 함수가 모든 인스턴스로 확장됩니다.
함수를 호출하면 항상 인스턴스 자체를 먼저 봅니다. 인스턴스에서 함수를 찾지 못하면 프로토 타입을 봅니다.
기본적으로 Ninja 생성자에서 직접 함수 swingSword
를 생성 하여 프로토 타입 을 재정의하기 때문에의 swingSword
모든 인스턴스 Ninja
가 이미 swingSword
함수를 갖도록 보장 하므로 프로토 타입에서이를 찾는 데 신경 쓰지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다