本地js中绑定函数的简单实现

本地js中绑定函数的简单实现
今天,我们继续研究绑定功能的实现,我们也知道垫片和polyfill,现在总结,
如果(!函数.原型.绑定){
function.prototype.bind =功能(o){
如果(typeof这!=函数){
事情可能 / /亲密的ECMAscript 5内部iscallable功能
抛出TypeError(function.prototype.bind -什么是想肯定不是));
}

无功aargs = array.prototype.slice.call(参数1),
这ftobind =,
浮点空操作=函数(){ },
fbound =函数(){
返回ftobind.apply(这是浮点空操作流)

| |:此窗口,
AArgs.concat(array.prototype.slice.call(参数)));
};

fnop.prototype = this.prototype;
fbound.prototype =新的浮点空操作();

返回fbound;
};
}
这是官方文件执行,我有两个方面来谈我想说的话。

第一个是参数,参数的使用

无功aargs = array.prototype.slice.call(参数1)。这里是绑定函数的参数数组,和第一个参数不是(不就),即要绑定的对象,其次是。

AArgs.concat(array.prototype.slice.call(参数)));这是使用数组的数组参数,参数是插在后面,注意,这个函数是返回执行,他的参数数组参数数组,fbound函数返回,所以两阵列下的参数不一位喜欢阿谀奉承。
第二个是上下文,上下文的变化很难理解,绑定函数主要用于绑定上下文。

ftobind =这是保存对象的上下文,和以下应用方法允许对象被绑定到上下文中使用

fnop.prototype = this.prototype;

fbound.prototype =新的浮点空操作();

这里是浮点空操作为中介对fbound this.prototype对原始对象的属性,以确保fbound执行的时代背景defined.originally

bound.prototype = self.prototype可以整合原有的属性,但这两个对象属性都指向同一个地方。修改bound.prototype会造成self.prototype改变。这不是我们的初衷。所以通过一个空函数,NOP做转移,可以有效防止这种情况的发生。

原生js绑定的功能上面的简单实现,萧边分享了你的全部内容。我希望能给你一个参考,希望你能支持它。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部