프로토 타입 함수/viewModel 함수를 다른 것보다 선호하는 이유가 있는지 궁금합니다.JavaScript - 프로토 타입 기능 대 ViewModel 기능?
Number.localeSeparator = 1.1.toLocaleString().substr(1, 1);
Number.prototype.centToEuro = function (separator_string) {
if (!separator_string) {
separator_string = Number.localeSeparator;
}
return (this/100).toFixed(2).replace(".", separator_string) + "€";
}
var vm = {myMoney: ko.observable(1234)};
ko.applyBindings(vm);
이것은 매우 쉽게 데이터 바인딩을했다 :
당신이Number
객체의 프로토 타입 함수를 내가했다 않았다 무엇
12.34€
같은 돈 값으로 정수 1234
을 대표 만들고 싶었 말 왜냐하면 내가보기에해야 할 일은 다음과 같았습니다.
<div data-bind="text: myMoney().centToEuro()"></div>
대신 프로토 타입 functio N, 나는 또한과 같이 거의 동일한 코드와 뷰 모델의 기능을 만들 수 있습니다보기에 사용
var vm = {
myMoney: ko.observable(1234),
localeSeparator: 1.1.toLocaleString().substr(1, 1),
centToEuro: function (value_int, separator_string) {
if (!separator_string) {
separator_string = vm.localeSeparator;
}
return (value_int/100).toFixed(2).replace(".", separator_string) + "€";
}
}
ko.applyBindings(vm);
, 그것은 다음과 같을 것이다 :
<div data-bind="text: centToEuro(myMoney())"></div>
당신이 알 수 있듯이, 두 HTML 행은 거의 동일한 길이이며 접근 방식 만 다릅니다. 그래서 질문은 어떤 접근 방식을 선호합니까?
좋아, 의미가 있습니다. 그리고 임의의 숫자에 대해 사용자 지정 함수를 사용하고 싶다면? 프로토 타입을 확장할지 여부를 일반 사례로 설명하거나 사용 사례에 따라 달라질 수 있습니까? – jaySon
그런 경우에도 여전히 일반적으로 [나쁜 생각]으로 간주됩니다 (http://stackoverflow.com/q/10197174/1048572) (여기에있는 주석의 링크도 참조하십시오). – Bergi