[Object] 상속(클래식) (하나) 객체 사칭 및 Call

1971 단어 사칭callapply
자세히 보기
작성자: 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류의 공유 속성과 방법을 계승하지 않았다.

좋은 웹페이지 즐겨찾기