以下代码之间有什么区别
function Ctrl($scope) {
$scope.$watch(function() {
return this.variable;
}.bind(this), /*...*/);
}
和
function Ctrl($scope) {
$scope.$watch(angular.bind(this, function() {
return this.variable;
}, /*...*/);
}
对我来说是相同的,但使用angular.bind
是否有任何好处?
答案 0 :(得分:3)
旧版浏览器such as IE 8中不存在内置Function.prototype.bind
功能。但是,使用polyfill可以实现相同的语法。 This基本上是Angular在内部所做的事情。
angular.bind
函数不使用Function.prototype.bind
,因此可以在旧版浏览器中使用它。当然,如果您使用的Angular版本不主动支持那些旧浏览器,那么这一点就没有实际意义。