JavaScript 代碼
var hh=34;
var bb = {
hh:12
}
function gg(){
alert(this.hh)
}
Function.prototype.bind = function(obj){
obj.fun = this;
return function(){
obj.fun()
}
};
var yy= gg.bind(bb);
yy(); //12
原理
1.給函數的原型對象添加bind 方法 這樣所有函數都可以使用這個方法。
2.this.指向調用的主體 當函數gg調用bind方法時 bind方法中的this指向gg 也就是等于gg ,将this 作為方法添加給傳入的對象。
3.以函數傳回執行這個對象的gg 方法 因為不是立即執行,是以要以函數傳回。
歡迎讨論指正,如有更好的方法,歡迎留言互相學習。