Javascript Lodash Wrapper 对象上的划分
Javascript division on Lodash Wrapper object
我最近升级到 Lodash 3.10.1,我发现有些奇怪。
假设我有一个数字数组,我想得到数组中的最大值然后减半:
var series = [ 6, 8, 2 ];
var highestTotal = _.chain(series)
.max();
console.log('highestTotal is ', highestTotal);
var halved = highestTotal / 2;
console.log('halved is ', halved);
我原以为这会引发错误,因为 highestTotal
是一个 Lodash 包装器。 IE。我本来认为有必要这样做:
var halved = highestTotal.value() / 2;
让它工作。但它不是!这是怎么回事?
Jsfiddle 是 here。
那是因为 lodash 包装器对象公开了一个 .valueOf
方法(别名为 .value
)并在需要原始值时由 JavaScript 自动调用(例如在算术运算中) ).
function myNumberType(n) {
this.number = n;
}
myNumberType.prototype.valueOf = function() {
return this.number;
};
myObj = new myNumberType(4);
myObj + 3; // 7
我最近升级到 Lodash 3.10.1,我发现有些奇怪。
假设我有一个数字数组,我想得到数组中的最大值然后减半:
var series = [ 6, 8, 2 ];
var highestTotal = _.chain(series)
.max();
console.log('highestTotal is ', highestTotal);
var halved = highestTotal / 2;
console.log('halved is ', halved);
我原以为这会引发错误,因为 highestTotal
是一个 Lodash 包装器。 IE。我本来认为有必要这样做:
var halved = highestTotal.value() / 2;
让它工作。但它不是!这是怎么回事?
Jsfiddle 是 here。
那是因为 lodash 包装器对象公开了一个 .valueOf
方法(别名为 .value
)并在需要原始值时由 JavaScript 自动调用(例如在算术运算中) ).
function myNumberType(n) {
this.number = n;
}
myNumberType.prototype.valueOf = function() {
return this.number;
};
myObj = new myNumberType(4);
myObj + 3; // 7