객체 생성:
함수 객체가 생성되면 Function 생성자에 의해 생성된 함수 객체는 다음과 유사한 코드를 실행합니다.
this.prototype={constructor:this};
함수 F가
F를 구성한다고 가정합니다. 새 메소드를 사용하는 객체 객체의 생성자가 이 F.prototype.constructor로 설정된 경우
함수가 객체를 생성하기 전에 함수의 프로토타입을 수정하면 생성된 객체의 생성자 속성에 영향을 미칩니다
예:
function F(){} ;
F.prototype={constructor: '1111'};
var o=new F();//o.constructor==='1111' true
원리 상속:
JavaScript의 상속 프로토타입 체인을 사용하는 메커니즘입니다. 각 함수 인스턴스는 생성자의 프로토타입 속성에 정의된 데이터를 공유합니다. 한 클래스가 다른 클래스를 상속하려면 상위 함수 인스턴스가 있어야 합니다. 하위 함수의 프로토타입 속성에 할당됩니다. 그리고 새로운 인스턴스 객체가 생성될 때마다 객체의 전용 속성인 __proto__가 생성자의 프로토타입에 자동으로 연결됩니다.
instanceof는 인스턴스 객체의 프라이빗 프로토타입 속성 체인을 조회하여 지정된 객체의 인스턴스인지 확인하는 것입니다.
구체적인 예:
//instanceof Implements
function Myinstanceof(obj,type)
{
var proto=obj.__proto__;
while(proto)
{
if(proto ===type.prototype)break;
proto=proto.__proto__; >return proto!=null
}
function View(){}
function TreeView(){}
TreeView.prototype=new View();//TreeView .prototype.__proto__=TreeView.prototype 자동 완성
TreeView.prototype.constructor=TreeView;//수정 생성자
var view=new TreeView();//view.__proto__=TreeView.prototype 자동 완성
Alert(view instanceof View); //true view.__proto__.__proto__가 발견되면
alert(view instanceof TreeView); //true가 발견됩니다. view.__proto__가 발견되면
alert(Myinstanceof(view) ,View)); //참
Alert(Myinstanceof(view,TreeView)) //참