前端面试中的一些手写题
一些问题解答:基于组件的二次封装,是因为原组件不能满足你的需求嘛?最后实现了怎样的效果呢
手写题:
面试编程题:
我们得清楚本质上,call()、apply()、bind()函数其实就是在函数调用时改变 this 指向。他们的区别,在于传递参数的形式和返回值。
下面,直接就开始进入实战,手写各个函数或关键字。
手写call
我们知道,在通过 obj.fn() 执行时,this 会改变指向,指向 obj。因此,我们可以利用这个规则来实现 call() 函数。
javascript
Function.prototype.customCall = function(ctx, ...args) {
var ctx = ctx || window; // 需要考虑传入参数为 null 的情况:为 null 时,this 会指向 window,ctx 也需要指向 window,不能为 null
ctx.fn = this; // 这里的 this 指向调用函数
ctx.fn(...args);
delete ctx.fn;
}