如何在无法访问 object.defineProperty 的情况下使用装饰器?
我正在研究可用的垫片:
但如果那些没有通过测试,装饰器是否有另一种工作方式?
我正在为$onRootScope使用装饰器。
我正在使用角度 1.08。我需要兼容 IE7。
更新
我尝试了一些似乎有效的方法,但我不知道它们之间的区别:plunkr
var app = angular.module('plunker', []);
app.config(['$provide', function($provide){
$provide.decorator('$rootScope', ['$delegate', function($delegate){
$delegate.a = 1;
$delegate.constructor.prototype.b = 2;
Object.defineProperty($delegate.constructor.prototype, 'c', {
value: 3
});
return $delegate;
}]);
}]);
app.controller('MainCtrl', function($rootScope, $scope) {
console.log($rootScope); //reveals `a` property
console.log($rootScope.constructor.prototype); //=> {b:2, c:3}
console.log($rootScope.a); //=> 1
console.log($rootScope.b); //=> 2
console.log($rootScope.c); //=> 3
$scope.name = 'World';
});
谢谢你。