객체 생성:
함수 객체가 생성되면 함수 생성자에 의해 생성된 함수 객체는 다음과 유사한 코드를 실행합니다.
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 인스턴스 보기) ; //true는 view.__proto__를 찾습니다.
alert(view instanceof TreeView)는 __proto__가 발견되면 발견됩니다. //view.__proto__가 발견되면 true가 발견됩니다.
alert(Myinstanceof(view,View)); /true
alert(Myinstanceof(view, TreeView)); //true
위의 사용자 정의된 Myinstanceof는 IE 커널 인스턴스 스토리지 프로토타입이 아니기 때문에 직접 구현한 함수입니다. __proto__, Myinstanceof는 통과하지 못하며, 다른 브라우저에서는 문제가 없을 것입니다