Javascript 호출과 적용의 차이점과 사용방법

高洛峰
풀어 주다: 2017-01-12 11:40:00
원래의
1088명이 탐색했습니다.

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(&#39;Cannot create product "&#39; + name + &#39;" with a negative price&#39;);
return this;
}
function Food(name, price) {
Product.call(this, name, price);
this.category = &#39;food&#39;;
}
Food.prototype = new Product();
function Toy(name, price) {
Product.call(this, name, price);
this.category = &#39;toy&#39;;
}
Toy.prototype = new Product();
var cheese = new Food(&#39;feta&#39;, 5);
var fun = new Toy(&#39;robot&#39;, 40);
로그인 후 복사

2.2. :

function Product(name, price) {
this.name = name;
this.price = price;
if (price < 0)
throw RangeError(&#39;Cannot create product "&#39; + name + &#39;" with a negative price&#39;);
return this;
}
function Food(name, price) {
Product.apply(this, arguments);
this.category = &#39;food&#39;;
}
Food.prototype = new Product();
function Toy(name, price) {
Product.apply(this, arguments);
this.category = &#39;toy&#39;;
}
Toy.prototype = new Product();
var cheese = new Food(&#39;feta&#39;, 5);
var fun = new Toy(&#39;robot&#39;, 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/&#39; + this.owner_id, function (data) {
callback && callback.call(self, data.name);
});
};
var album = new Album(1, ‘设计蜂巢&#39;, 2);
album.get_owner(function (owner) {
alert(‘The album&#39; + this.name + ‘ belongs to ‘ + owner);
});
로그인 후 복사

Javascript 호출과 적용 사이 메소드 관련 글은 PHP 중국어 홈페이지를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿