bind方法不是弃用了吗?
jquery的事件绑定方法.bind(),和视频所讲的js原生修改函数this指向的.bind(),是两个东西啊。大兄弟,你会不会把这两者混淆了~
bind 函数在 ECMA-262 第五版才被加入;它可能无法在所有浏览器上运行。你可以部份地在脚本开头加入以下代码,就能使它运作,让不支持的浏览器也能使用 bind() 功能。
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),
fToBind = this,
fNOP = function () {},
fBound = function () {
fBound.prototype = this instanceof fNOP ? new fNOP() : fBound.prototype return fToBind.apply(this instanceof fNOP
? this
: oThis || this,
aArgs.concat(Array.prototype.slice.call(arguments)))
}
if( this.prototype ) {
// Function.prototype doesn't have a prototype property
fNOP.prototype = this.prototype }
return fBound }}