다음과 같이 코드 코드를 복사하십시오.
<MCE : script type = "text/javaScript"> <!-
/*
각 객체 인스턴스에는 멤버가 객체의 인스턴스를 가리키는 데 사용되는 프로토 타입 (프로토 타입)이 있습니다.
우리는 아버지의 프로토 타입 사이의 관계를 [프로토 타입 체인 프로토 타입 Chian]
프로토 타입에는 또한 우리가 개인적으로 변경하지 않는 한 종종 객체 인스턴스이기 때문에 아버지가 있습니다.
JavaScript에서 "모든 것이 객체이며 함수는 첫 번째 유형입니다."
함수와 객체는 함수의 인스턴스입니다.
기능의 아버지 프로토 타입은 기능, 기능의 프로토 타입을 가리킨다. 프로로 타입의 아버지 프로토 타입은 개체입니다.
Object의 상위 프로토 타입은 또한 기능의 프로토 타입을 가리 킵니다
Spidermonkey 엔진에서 부모 프로토 타입은 __proto__를 통해 액세스 할 수 있습니다.
*/
function.prototype.hi = function () {alert ( 'hi function');}
object.prototype.hi = function () {alert ( 'hi object');}
var a = function () {
this.txt = "a";
}
A. 프로토 타입 = {
말 : function () {alert ( 'a');}
}
경고 (인스턴스 기능); // a는 함수의 인스턴스입니다.
경고 (a .__ loto__ === function.prototype);
경고 (객체의 함수 인스턴스);
Alert (function .__ loto__ === fu conction.prototype);
Alert (function.prototype .__ loto__ === 객체. 프로토 타입);
Alert (object .__ proto__ === function.prototype);
Alert (Object.Prototype .__ loto __); // 객체의 프로토 타입은 더 이상 원래의 아버지가 없습니다.
Alert (A.Prototype 인스턴스); // A의 프로토 타입도 객체입니다
Alert (a.protople .__ loto__ === 객체. 프로로 타입);
var a = function () {};
A. 프로토 타입 = 새로운 a ();
A.prototype.say = function () {
경고 ( 'a');
}
경고 (인스턴스 기능); // a는 함수의 인스턴스입니다
Alert (a .__ propo__ === function.prototype);
ALERT (a.prototype 인스턴스 a);
Alert (A.Protopte .__ loto__ === A. prototype);
var ia = new a (); // ia는 a, ia .__ proto__ === A. 프로토 타입입니다.
var ib = new a (); // ib는 a, ib .__ proto__ ===
ia.hi ();
/*
IA 자체는 HI 메소드가 없습니다 (구조에는없고 정의하지 않았습니다).
그러니 ia .__ proto__, 즉 a.prototype을 찾아 찾지 못했습니다.
그러니 A.prototype .__ loto__, 즉 A.prototype을 찾아 보았습니다. 그리고 나는 여전히 그것을 찾지 못했습니다.
A.prototype를 계속 찾으십시오 .___ loto__, 그것은 객체입니다. prototype, 와우, 나는 안녕을 찾았습니다.
출력 : 안녕하세요 객체
*/
ib.hi ();
/*
IB 자체는 HI 메소드가 없습니다 (구조에는없고 정의하지 않았습니다).
따라서 ib .__ loto__, 즉 a.prototype를 찾으십시오.
A.prototype를 계속 찾으십시오 .___ loto__, 그것은 객체입니다. prototype, 와우, 나는 안녕을 찾았습니다.
출력 : 안녕하세요 객체
*/
A.HI ();
/*
자체는 HI 메소드가 없습니다 (구조에는없고 정의하지 않았습니다),
그러니 .__ propo___ 두 기능을 찾으십시오. 프로로 타입, 와우, 나는 안녕하세요, 전화를 걸어 찾는 것을 멈 춥니 다.
출력 : HI 기능
*/
ia.say ();
/*
IA 자체는 말이 없으며 (구조에없고, 나는 그것을 정의하지 않았습니다),
그러니 ia .__ proto__, 즉 a.prototype를 찾으십시오. 와우, 나는 그것을 찾았으므로 전화를 걸어 찾는 것을 멈췄습니다.
A.prototype.say는 다음과 같습니다
출력 : a
*/
ib.say ();
/*
IB 자체는 말이 없으며 (구조에없고, 나는 그것을 정의하지 않았습니다),
그러니 ib .__ loto__, 즉 A.prototype, 와우를 찾았습니다.
A.prototype.say는 다음과 같습니다
출력 : a
*/
ia.bad ();
/*
IA 자체는 잘못된 방법이 없습니다 (구조에는없고 정의하지 않았습니다),
그러니 ia .__ proto__, 즉 a.prototype을 찾아 찾지 못했습니다.
A.prototype .__ loto__, 즉 A.prototype을 찾으십시오. 그리고 나는 여전히 그것을 찾지 못했습니다.
A.prototype .__ loto__, 객체. prototype를 계속 찾으십시오.
반환 오류, ia.bad는 함수가 아닙니다
*/
// -> </mce : 스크립트>
</스크립트>
사이먼의 수정 의견 덕분에! 모든 인스턴스는 속성 메소드를 검색 할 때 자체 프로토 타입을 찾지 못합니다 (인스턴스의 프로토 타입은 프로토 타입 체인에 있지 않으며 속성으로 만 사용할 수 있음)!