码迷,mamicode.com
首页 > 其他好文 > 详细

bind君不可能干掉静态对象

时间:2016-07-14 03:02:55      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

bind也不是啥新东西了 我一直使用箭头函数代替它的某些功能 也觉得它挺简单的 没做过多的研究

最近发现bind还会帮你做奇怪的事情 不光只是bind了 如下

const x = x=>{x};
x.prop = ‘x‘;
const x2 = x.bind({});
//undefined
console.log(x2.prop)

发现x函数上的静态属性被移除了 这并不是我想要的!有些时候 我们就是希望函数上的静态属性被继承下来!

可以这么做  把属性丢到上层原型链中

const x = x=>{x};
x.__proto__ = {prop:‘x‘,__proto__:Function.prototype}
const x2 = x.bind({});
//x
console.log(x2.prop)

在不支持es5的环境中 我们通过polyfill实现的 再回头来看看那些代码 如下(来自mdn)

技术分享

这个跟原生的bind差别还是有的

而且上面那段代码并不能满足你  因为不想静态对象被干掉! 还得做点手脚才行!

其实 只要在上面基础上再加一句就行了 如下

fBound.__proto__ = {__proto__:this.__proto__};

这就完事儿了~

bind君不可能干掉静态对象

标签:

原文地址:http://www.cnblogs.com/daidaidai/p/5668607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!