1. 메소드 정의
호출 메소드:
구문: fun.call(thisArg[, arg1[, arg2[, ...]]])
정의: 객체의 메소드 호출 , 현재 개체를 다른 개체로 바꿉니다.
참고:
call 메소드를 사용하여 다른 객체 대신 메소드를 호출할 수 있습니다. call 메서드는 함수의 개체 컨텍스트를 원래 컨텍스트에서 thisArg가 지정한 새 개체로 변경합니다.
thisArg 매개변수가 제공되지 않으면 전역 개체가 thisArg로 사용됩니다.
적용 메서드:
구문: fun.apply(thisArg[, argsArray])
정의: 개체의 메서드를 적용하고 현재 개체를 다른 개체로 바꿉니다.
참고:
argArray가 유효한 배열이 아니거나 인수 객체가 아닌 경우 TypeError가 발생합니다.
argArray나 thisArg가 모두 제공되지 않으면 전역 개체가 thisArg로 사용되며 매개변수를 전달할 수 없습니다.
2. 두 방법의 차이점
두 방법의 기본적인 차이점은 매개변수가 전달된다는 점입니다.
2.1. 호출 방법:
function Product(name, price) { this.name = name; this.price = price; if (price < 0) throw RangeError('Cannot create product "' + name + '" with a negative price'); return this; } function Food(name, price) { Product.call(this, name, price); this.category = 'food'; } Food.prototype = new Product(); function Toy(name, price) { Product.call(this, name, price); this.category = 'toy'; } Toy.prototype = new Product(); var cheese = new Food('feta', 5); var fun = new Toy('robot', 40);
2.2. :
function Product(name, price) { this.name = name; this.price = price; if (price < 0) throw RangeError('Cannot create product "' + name + '" with a negative price'); return this; } function Food(name, price) { Product.apply(this, arguments); this.category = 'food'; } Food.prototype = new Product(); function Toy(name, price) { Product.apply(this, arguments); this.category = 'toy'; } Toy.prototype = new Product(); var cheese = new Food('feta', 5); var fun = new Toy('robot', 40);
3. 함수 예시
3.1.클래스 상속
function Person(name,age){ this.name = name; this.age=age; this.alertName = function(){ alert(this.name); } this.alertAge = function(){ alert(this.age); } } function webDever(name,age,sex){ Person.call(this,name,age); this.sex=sex; this.alertSex = function(){ alert(this.sex); } } var test= new webDever(“设计蜂巢”,24,”男”); test.alertName();//设计蜂巢 test.alertAge();//24 test.alertSex();//男
3.2.콜백 함수
function Album(id, title, owner_id) { this.id = id; this.name = title; this.owner_id = owner_id; }; Album.prototype.get_owner = function (callback) { var self = this; $.get(‘/owners/' + this.owner_id, function (data) { callback && callback.call(self, data.name); }); }; var album = new Album(1, ‘设计蜂巢', 2); album.get_owner(function (owner) { alert(‘The album' + this.name + ‘ belongs to ‘ + owner); });
Javascript 호출과 적용 사이 메소드 관련 글은 PHP 중국어 홈페이지를 주목해주세요!