什么是绑定函数和未绑定函数?
答案 0 :(得分:5)
我创建了一个 JSFiddle 来说明我对差异的理解。未绑定函数是未绑定到对象的函数,因此该函数中的this
引用全局(窗口)对象。您可以通过使函数成为对象的方法或使用.bind()
方法显式绑定它来绑定函数。我在我的代码中演示了不同的案例:
// A function not bound to anything. "this" is the Window (root) object
var unboundFn = function() {
alert('unboundFn: ' + this);
};
unboundFn();
// A function that is part of an object. "this" is the object
var partOfObj = function() {
alert('partOfObj: ' + this.someProp);
};
var theObj = {
"someProp": 'Some property',
"theFn": partOfObj
};
theObj.theFn();
// A function that is bound using .bind(), "this" is the first parameter
var boundFn = function() {
alert('boundFn: ' + this.someProp);
};
var boundFn = boundFn.bind(theObj);
boundFn();