그래서 JS에서 간단한 Price 클래스를 만들고 싶다고합시다. 그것은 기본적으로 숫자입니다. 그래서 저는 제가 Number로부터 상속받을 것이라고 생각했습니다. 다음은 몇 가지 코드입니다.자바 스크립트 번호 상속성
Number.prototype.toMoney = function (precision, decimals, thousands) {
// Formats number...
}
function Price(val) {
Number.call(val); // Based on MozillaDN
}
Price.sufix = ' EUR'; // To print with every Price
// Price.prototype = Number.prototype;
Price.prototype = new Number(); // any difference?
Price.prototype.toString = function() {
return this.toMoney() + Price.sufix; // Of course it does not work.
}
var price = new Price(100.50);
alert(price.toString()); // Gives: undefined EUR
alert(price); // This fail. I thought it should work as it works with Numbers.
아마도 뭔가 잘못된 것이 있습니다. 그러나 나는 무엇을 발견 할 수 없습니다.
Price.prototype - new Number(); // any difference?
그렇지 마이너스 기호에 서명 =을 사용할 필요가 있도록 가격의 프로토 타입이 될 수있는 새로운 번호를 할당됩니다
fyi, 이는 'sufix'가 아니라 sufix입니다. 'Number.call()'도 약간 이상해 보입니다. 여러분이 그런 생성자 함수를 호출 할 수 있다고 생각하지 않습니다. – ThiefMaster
이것은 "Number.prototype.valueOf가 일반적이지 않기"때문에 멋지게 작동하지 않습니다. 'Price' 인스턴스에 접근 할 수는 있지만 기본 숫자 값을 얻을 수는 없습니다. – pimvdb
@pimvdb 나는 이것으로 이미 고투하고 있었다, 그러나 나는 그것이 거친 가능하다고 생각했다. 이것은 상속을 무시하고 ex에 대한 "value"라는 Price 클래스 내부의 속성을 만들어야한다는 것을 의미합니까? –