JS apply 와 call 실현
1101 단어 전단 개발
function Person() {
this.name = " "
}
Person.prototype.print = function(age, city) {
console.dir(` :$ {
this.name
}, :$ {
age
}, :$ {
city
}`);
}
const person = new Person();
person.print(18, " ");
// call
function _call() {
let[o, ...args] = arguments;
o.fn_tmp = this; // this , ._call
o.fn_tmp(...args);
delete o.fn_tmp; // ,
}
Function.prototype._call = _call;
// apply
function _apply(obj, arr) {
if (! (arr instanceof Array)) {
throw " "
}
obj.fn_tmp = this;
obj.fn_tmp(...arr);
// ES6, , eval 。
delete obj.fn_tmp
}
Function.prototype._apply = _apply;
//
const obj = {
name: "nh"
}
person.print._call(obj, 20, " ");
person.print._apply(obj, [21, " "]);
console.dir(obj);
내 홈 페이지:https://blog.csdn.net/qq_2975277, 전단 (Vue, electron...), Python 등 이 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Chrome Extension 2 편 -- 통신메모: 만약 여러 페이지 가 onMessage 사건 을 감청 한다 면, 어떤 사건 에 대해 서 는 sendResponse () 를 처음 호출 하 는 것 만 성공 적 으로 응답 할 수 있 고, 모든 다른 응답 은 무 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.