分析:
Function.prototype.myCall = function (ctx, ...args) {
// call的第一个参数为null/undefined时,this则指向全局window(这里是浏览器环境,node环境则不是window),其余则转为对象
ctx = (ctx === null || ctx === undefined) ? window : Object(ctx);
// 这里之所以采用symbol,是为了避免和对象的属性重名
const func = Symbol('func');
// 优化打印this的console值
Object.defineProperty(ctx, func, {
enumerable: false,
value: this,
})
const result = ctx[func](...args);
delete ctx[func];
return result;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。