재미있는 전단 면접 문제 (5)

2379 단어

부류를 계승하는 방법


첫 번째, 프로토타입 방식:
function person(){
    this.eye="big";
    this.hair="black"
    this.view=function(){
        return this.eye+","+this.hair
    }
    
}
 function man(){
 this.feature=["beard","strong"]
}
man.prototype=new person();
var m =new man();
console(m.view());


두 번째, apply 방식:
function person(){
    this.eye="big";
    this.hair="black"
    this.view=function(){
        return this.eye+","+this.hair
    }
}
function man(){
  // person.apply(this,new Array()); 
    person.apply(this,[])
    this.feature=["beard","strong"]
}
var one = new man(); 

만약 apply 매개 변수가 비어 있다면, 매개 변수가 전달되지 않으면, new Array (), []를 통해 전달됩니다.null은 무효입니다.apply, 방법의 교체와 대상 속성의 복제 작업 실현
세 번째, call+prototype:
function person(){
    this.eye="big";
    this.hair="black"
    this.view=function(){
        return this.eye+","+this.hair
    }
}
function man(){
  // person.call(this,new Array()); 
    person.call(this,[])
    this.feature=["beard","strong"];
}
man.prototype=new person();
var one = new man(); 

call 방식이 apply보다 많습니다.prototype=new person();콜이 방법의 교체를 실현했지만 대상 속성의 복제 작업을 하지 않았기 때문이다
참고: 참고 사항
function Parent(name,age){
    this.name=name;
   this.age=age;
   this.sayHi=function(){
    alert("Hi, my name is "+this.name+", my age is "+this.age);
   }
}
//child  parent
 function Child(name,age,grade){
   this.grade=grade;
   Parent.apply(this,[name,age])
   //Parent.call(this,name,age);
   this.sayGrade=function(){
    alert("My grade is "+this.grade);
   }
  }
  var chi=new Child(" ","10","5");
  chi.sayHi();
  chi.sayGrade();

네 번째, 구조 함수 방법:
function parent(name,age){
    this.name=name;
   this.age=age;
   this.sayHi=function(){
    alert("Hi, my name is "+this.name+", my age is "+this.age);
   }
}
//child  parent
 function Child(name,age,grade){
   this.grade=grade;
   this.sayHi=Parent;///////////
   this.sayHi(name,age);
   this.sayGrade=function(){
    alert("My grade is "+this.grade);
   }
  }
  var chi=new Child(" ","10","5");
  chi.sayHi();
  chi.sayGrade();
  

좋은 웹페이지 즐겨찾기