>  기사  >  웹 프론트엔드  >  JavaScript의 객체 생성 및 상속 원칙

JavaScript의 객체 생성 및 상속 원칙

高洛峰
高洛峰원래의
2016-11-28 15:51:011045검색

객체 생성:

함수 객체가 생성되면 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;//Correction 생성자
var view=new TreeView() ;//view.__proto__= TreeView.prototype은 자동으로 완료됩니다.
alert(view instanceof View); //view.__proto__.__proto__가 발견되면 true가 발견됩니다.
alert(view instanceof TreeView가 발견됩니다.); view.__proto__가 발견된 경우
alert(Myinstanceof(view,View)); //true
alert(Myinstanceof(view,TreeView)) //true
위의 사용자 정의된 Myinstanceof는 instanceof의 함수입니다. IE 커널 인스턴스 저장소 프로토타입은 __proto__가 아니므로 다른 브라우저에서는 문제가 없을 것입니다


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.