为什么 setter 可以提高 JS/Angular 数组的性能
Why do setters improve performance in JS/Angular array
我正在处理 Angular 的一些性能问题,我在代码中注意到
// TODO(perf): generate setters to shave off ~40ms or 1-1.5%
如何为这样的东西创建一个 Javascript getter setter...
$scope.$first = (index === 0);
提高性能,什么是 "setter"?是这样的吗?
scope.$first = function(){
index === 0;
};
javascript中的一个setter
如下:
var dogs = {'medor': ..., 'fido': ...}
var my = {};
Object.defineProperty(my, "dogname", {
set: function (name) { this.dog = dogs[name]; }
});
现在如果你写
my.dogname = 'fido'
将调用 setter,您将在 my.dog
中设置狗
由于是ES自带的特性,比起依赖listener/watcher/closure的任何一个王者,速度更快,层次更低。
例如,如果设置 $scope.first
应该有副作用,例如更新 $scope.last
,setter 方法更快:
Object.defineProperty($scope, "$first", {
set: function (index) { this.$last = this.$first + length } // for instance
});
我正在处理 Angular 的一些性能问题,我在代码中注意到
// TODO(perf): generate setters to shave off ~40ms or 1-1.5%
如何为这样的东西创建一个 Javascript getter setter...
$scope.$first = (index === 0);
提高性能,什么是 "setter"?是这样的吗?
scope.$first = function(){
index === 0;
};
javascript中的一个setter
如下:
var dogs = {'medor': ..., 'fido': ...}
var my = {};
Object.defineProperty(my, "dogname", {
set: function (name) { this.dog = dogs[name]; }
});
现在如果你写
my.dogname = 'fido'
将调用 setter,您将在 my.dog
由于是ES自带的特性,比起依赖listener/watcher/closure的任何一个王者,速度更快,层次更低。
例如,如果设置 $scope.first
应该有副作用,例如更新 $scope.last
,setter 方法更快:
Object.defineProperty($scope, "$first", {
set: function (index) { this.$last = this.$first + length } // for instance
});