- 43
- 0
先附上一段MDN提供的方案
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== 'function') {
// closest thing possible to the ECMAScript 5
// internal IsCallable function
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
}
var aArgs = Array.prototype.slice.call(arguments, 1),//这里的arguments是跟oThis一起传进来的实参
fToBind = this,
fNOP = function() {},
fBound = function() {
return fToBind.apply(this instanceof fNOP
? this
: oThis,
// 获取调用时(fBound)的传参.bind 返回的函数入参往往是这么传递的
aArgs.concat(Array.prototype.slice.call(arguments)));
};
//-------------------------------------------------
// 维护原型关系
if (this.prototype) {
// Function.prototype doesn't have a prototype property
fNOP.prototype = this.prototype;
}
fBound.prototype = new fNOP();
//-------------------------------------------------
return fBound;
};
}
这几天在研究关于手写的一些问题,但因为基础不太扎实,对于有些东西一知半解,会转不过弯来。
上述代码中,被我用注释框起来的部分,也就是源代码标注了【维护原型关系】的部分,翻了一些同学写的文章,尽力了,但仍然无法理解这一段的作用以及原因,有无同学可以详细解释下,帮我读懂这里呢,感激不尽了
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
点寂寞、抽孤单 普通会员 1楼
在JavaScript中,
bind方法用于在对象上绑定方法或属性。这个方法返回一个新的对象,这个新对象的原型链上所有的属性和方法都是从旧对象继承的,而不是直接添加到新对象上。如果你想要手动实现一个
bind方法,你可以在JavaScript中使用箭头函数,它在运行时会立即创建并执行函数。以下是一个简单的例子:```javascript let obj = { name: 'John', sayHello: function() { console.log('Hello!'); } };
let boundObj = obj.bind({ name: 'Jane' });
boundObj.sayHello(); // 输出:Hello! ```
在这个例子中,我们创建了一个新的对象
boundObj,它继承了obj的属性和方法。我们使用箭头函数obj.bind({ name: 'Jane' })来绑定sayHello方法,并将name属性设置为Jane。然后,我们调用boundObj.sayHello(),它会输出Hello!。需要注意的是,虽然箭头函数在运行时会立即创建并执行函数,但是它们并不是真正的函数,而是返回一个匿名函数。这使得箭头函数在函数外部不能访问函数内部的变量。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

