>  기사  >  웹 프론트엔드  >  자바스크립트 호출과 적용의 차이점과 사용법_기본지식

자바스크립트 호출과 적용의 차이점과 사용법_기본지식

WBOY
WBOY원래의
2016-05-16 17:15:20784검색

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(이름, 가격) {
this.name = 이름;
this.price = 가격;
if (가격 < 0)
throw RangeError('음수 가격으로 "' 이름 '" 제품을 생성할 수 없습니다.');
이것을 반환합니다.
}

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);


적용 방법:
코드 복사 코드는 다음과 같습니다.

기능 제품(이름, 가격) {
이것. name = name ;
this.price = 가격;
if (price < 0)
throw RangeError('음수 가격으로 "' name '" 제품을 생성할 수 없습니다.');
이것을 반환 ;
}

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 Person (이름,나이){
this.name = 이름;
this.age=나이;
this.alertName = function(){
alert(this.name);
}
this.alertAge = function(){
alert(this.age);
}
}

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();//남성


3.2, 콜백 함수
코드 복사 코드는

함수 앨범(id, title, owner_id) {
this.id = id;
this.name = title;
this.owner_id = owner_id;
} ;
Album.prototype.get_owner = 함수(콜백) {
var self = this;
$.get('/owners/' this.owner_id, 함수(데이터) {
callback && callback .call(self, data.name);
});
};
var album = new Album(1, 'Design Hive', 2);
album.get_owner( function (owner ) {
alert('The album' this.name '은 'owner'에 속합니다);
});
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.