2016-07-20 2 views
2

최근에 Lodash 3.10.1으로 업그레이드되었으며 이상한 것으로 나타났습니다. Lodash 래퍼 객체의 자바 스크립트 부분

내가 숫자의 배열을 말해봐 내가 반에게 다음을 배열의 최대 싶어 :

var series = [ 6, 8, 2 ]; 

var highestTotal = _.chain(series) 
        .max(); 

console.log('highestTotal is ', highestTotal); 

var halved = highestTotal/2; 

console.log('halved is ', halved); 

나는 Lodash 래퍼 인이 highestTotal 같은 오류를 던진 것이라고 생각했을 것이다. 나는. 나는해야한다고 생각 했어.

var halved = highestTotal.value()/2; 

그것이 효과가있다. 그러나 그것! 어떻게 된 일인가?

jsiddle은 here입니다.

답변

2

로다시 래퍼 객체가 .value으로 앨리어스 된 .valueOf 메소드를 노출하고 프리미티브 값이 예상되는 경우 (예 : 산술 연산 내에서) JavaScript에 의해 자동으로 호출되기 때문입니다.

From the MDN :

function myNumberType(n) { 
    this.number = n; 
} 

myNumberType.prototype.valueOf = function() { 
    return this.number; 
}; 

myObj = new myNumberType(4); 
myObj + 3; // 7 
관련 문제