JS 원형 과 몇 가지 계승 총화
구조 함수 에는 prototype 속성 이 있 고 그의 원형 대상 을 가리 키 며 모든 원형 대상 에 해당 하 는 constructor 속성 이 있 으 며 원 구조 함 수 를 가리킨다.
구조 함 수 를 통 해 만 든 새 대상 중 직접 접근 할 수 없 는 [proto] 속성 이 있어 서 이 대상 도 구조 함수 의 원형 을 가리 키 게 합 니 다.대상 도 원형 중의 방법 과 속성 을 얻 었 다.대상 에 접근 하 는 방법 과 속성 이 있 을 때 대상 에 이 방법 과 속성 이 없 으 면 이전 원형 대상 에서 이 방법 과 속성 을 찾 고 찾 으 면 이 방법 과 속성 을 되 돌려 주 며 없 으 면 위의 원형 에서 이 방법 과 속성 을 찾 을 때 까지 계속 찾 습 니 다.
기본 최상 위 프로 토 타 입:
모든 유형 이 어떤 유형 을 계승 하 는 지 밝 히 지 않 았 을 때 Object 형식 을 기본적으로 계승 합 니 다.
function Animal(){
this.name=" ";//
this.eat=function(){ //
return this.name+" !";
}
}
Animal.prototype.color="pink";//
Animal.prototype.sit=function (){//
return this.name+" !";
};
//
function Dog(){}
// :
Dog.prototype=new Animal();
// undefined
var dog=new Dog();
/* console.log(Dog.eat());// eat
console.log(this.eat());*/
console.log(dog.name);//
console.log(dog.eat());//
console.log(dog.color);//pink
console.log(dog.sit());//
Dog.prototype.type=" ";
Dog.prototype.name=" ";
Dog.prototype.color="red";
console.log(dog.type);//
console.log(dog.name);//
console.log(dog.color);//red
console.log(dog.eat());//
console.log(dog.sit());//
console.log(dog instanceof Dog);//true dog Dog
console.log(dog instanceof Animal);//true dog Animal
/* :
, ,
/ ,
,
:
, new Animal() ,
, */
function Animal(){
this.name=name||" ";
this.eat=function(){
return this.name+" !";
}
}
Animal.prototype.sit=function(){
return this.name+" !";
};
function Cat(){
var mao=new Animal();
mao.name=" ";// , this.name=name||" ";
return mao;
}
var cat=new Cat();// var cat=new Animal();
console.log(cat.name);
console.log(cat.eat());
console.log(cat.sit());
/* :
, new () (),
:
,
*/
/* */
/*call apply*/
/* apply(object,[]) call(object,x1,x2,x3....)*/
/* */
// : , ( )
function Animal(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
this.eat=function(){
return this.name+" !";
}
}
// Type,Animal
function Type(type){
this.type=type;
this.bite=function (){
return " !"
}
}
/*Type.prototype.bite=function (){
return " !"
}*/
function Dog(name,age,sex,type){
Animal.call(this,name,age,sex);
Type.apply(this,[type]);//Type.apply(this,arguments);//
/* Animal.call(this);//
Type.apply(this);
this.name=name;
this.sex=sex;
this.age=age;
this.type=type;*/
}
var dog=new Dog(" ",13," "," ");
console.log(dog.name);
console.log(dog.age);
console.log(dog.sex);
console.log(dog.eat());
console.log(dog.type);
console.log(dog.bite());
console.log(dog instanceof Dog);//true dog Dog
console.log(dog instanceof Animal);//false
/* :
,
(call )
:
,
, /
, , */
//
function Animal(name){
this.name=name;
this.eat=function(){
return this.name+" !";
}
}
Animal.prototype.sit=function(){
return this.name+" !";
};
//
function Dog(name){
Animal.apply(this,arguments)
}
Dog.prototype=new Animal();// dog sit
var dog=new Dog(" ");
console.log(dog.name);
console.log(dog.eat());
console.log(dog.sit());
/* :
:
, ;*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.