[Object] 상속(클래식) (하나) 객체 사칭 및 Call
작성자: zccst
먼저 이런 방법을 억측해 보아라
var a = function(){
alert(1);
}
console.log(a);
a.m1 = function(){
alert(2);
}
console.log(typeof a);
console.log(typeof a.m1);
a.m1();
// : ,
사칭
// ,
function Person(name,age){
this.name = name;
this.age = age;
this.sayHi = function(){
alert('hi');
}
}
Person.prototype.walk = function(){
alert('walk.......');
}
function Student(name,age,grade){
// 。
this.newMethod = Person;
this.newMethod(name,age);
delete this.newMethod;// ,newMethod Person prototype walk
this.grade = grade;
}
var s1 = new Student('xiaoming',10,3);
console.log(s1);//s1 Student ,
//Student { name="xiaoming", age=10, grade=3, sayHi=function() }
//s1.walk();// s1.walk is not a function
//결론: Student류는 Person류의 특권 속성과 방법만 계승하고 Person류의 공유 속성과 방법을 계승하지 않았다.
2. 콜과 apply(구조 함수 대여)
// call apply , this
function Person(name,age){
this.name = name;
this.age = age;
this.sayHi = function(){
alert('hi');
}
}
Person.prototype.walk = function(){
alert('walk.......');
}
function Student(name,age,grade){
// this
Person.call(this, name, age);
this.grade = grade;
}
var s1 = new Student('xiaoming',10,3);
console.log(s1);//s1 Student ,
//Student { name="xiaoming", age=10, grade=3, sayHi=function() }
//s1.walk();//s1.walk is not a function
//결론: 앞의 대상이 사칭한 것과 같이 Student류는 Person류의 특권 속성과 방법만 계승하고 Person류의 공유 속성과 방법을 계승하지 않았다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바스크립트 기초 8call 메서드는 모든 함수에서 사용할 수 있으며, this를 특정값으로 지정할 수 있다. apply apply는 함수 매개변수를 처리하는 방법을 제외하면 call과 완전히 같음. call은 일반적인 함수와 마찬가지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.