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 등 이 있 습 니 다.

좋은 웹페이지 즐겨찾기