我每天都在使用 Ruby,但如今 JavaScript 无处不在,我也需要学习这种语言。
我从“学习 JavaScript 设计模式”开始,现在我阅读了第 6 版“JavaScript:权威指南”。
我也在读一些博客。
我找到了一个我完全不明白的代码片段:
if (!Function.prototype.bind) {
Function.prototype.bind = function(obj) {
var slice = [].slice,
args = slice.call(arguments, 1),
self = this,
nop = function () {},
bound = function () {
return self.apply(this instanceof nop ? this : (obj || {}), args.concat(slice.call(arguments)));
};
nop.prototype = self.prototype;
bound.prototype = new nop();
return bound;
};
}
我知道它会检查是否定义了一个名为 bind 的函数,如果没有定义它。
但是为什么要检查 Function 对象的原型呢?
为什么它不是一个简单的检查:
if(typeof bind != 'function')