1. 메소드 정의
호출 메소드:
구문: fun.call(thisArg[, arg1[, arg2[, ...]]])
정의: 현재 개체를 다른 개체로 바꾸려면 개체에 대한 메서드를 호출합니다.
참고:
call 메소드를 사용하여 다른 객체 대신 메소드를 호출할 수 있습니다. call 메서드는 함수의 개체 컨텍스트를 원래 컨텍스트에서 thisArg가 지정한 새 개체로 변경합니다.
thisArg 매개변수가 제공되지 않으면 전역 개체가 thisArg로 사용됩니다.
적용 메서드:
구문: fun.apply(thisArg[, argsArray])
정의: 개체의 메서드를 적용하고 현재 개체를 다른 개체로 바꿉니다.
참고:
argArray가 유효한 배열이 아니거나 인수 객체가 아닌 경우 TypeError가 발생합니다.
argArray나 thisArg가 모두 제공되지 않으면 전역 개체가 thisArg로 사용되며 매개변수를 전달할 수 없습니다.
2. 두 메소드의 차이점
두 메소드의 기본적인 차이점은 매개변수가 다르게 전달된다는 점입니다
2.1 호출 메소드:
function Food(이름, 가격) {
Product.call(this, 이름, 가격);
this.category = 'food';
}
Food.prototype = new Product( );
function 장난감(이름, 가격) {
Product.call(this, 이름, 가격);
this.category = '장난감';
}
Toy.prototype = 새 제품( );
var Cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);
function Food(이름, 가격) {
Product.apply(this, 인수);
this.category = 'food';
}
Food.prototype = new Product();
function Toy(이름, 가격) {
Product.apply(this, 인수);
this.category = 'toy';
}
Toy.prototype = new Product();
var Cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);
3.1. 클래스 상속
function webDever(이름,나이,성별){
Person.call(this,name,age);
this.sex=sex;
this.alertSex = function(){
경고(this.sex);
}
}
var test= new webDever("Design Hive",24,"남성");
test.alertName();//Design Hive
test.alertAge();//24
test .alertSex();//남성