저는 늘 이 두 가지의 용도를 잊어버리고 기록으로 남겨둡니다.
기능은 완전히 동일하지만 전달되는 매개변수가 다릅니다
신청
apply는 두 개의 매개변수를 허용합니다. 첫 번째 매개변수는 함수 본문에서 this 객체에 대한 포인터를 지정합니다. 두 번째 매개변수는 첨자 컬렉션(탐색 가능한 객체)입니다. Apply 메서드는 이 컬렉션의 요소를 객체에 매개변수로 전달합니다. 호출되는 함수:
var func = function(a, c, c){ alert([a,b,c]); //[1,2,3] } func.apply(null, [1,2,3]);
전화
호출에 전달된 매개변수는 고정되지 않습니다. Apply와 마찬가지로 첫 번째 매개변수도 함수 본문의 this 포인터를 나타냅니다. 두 번째 매개변수부터 시작하여 각 매개변수가 차례로 함수에 전달됩니다.
var func = function(a, b, c){ alert([a,b,c]); //[1,2,3] } func.call(null, 1,2,3);
통화 및 신청의 목적
1. 을 가리키도록 변경하세요.
2.Function.prototype.bind
Function.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }; var obj = { name: 'cxs' }; var func = function(){ alert(this.name); //cxs }.bind(obj); fun();