나는 자바 스크립트에 다음 함수를 쓰고 있어요 :자바 스크립트 함수에서 기본 옵션을 쉽게 재정의하도록 허용하는 방법은 무엇입니까?
Number.prototype.niceFormat(options) {
var defaultOptions = {
thousandSeparator: ',',
leftPad: 0,
decimalPlaces: 2
};
if (typeof options.thousandSeparator != 'undefined'
&& options.thousandSeparator != null) {
defaultOptions.thousandSeparator = options.thousandSeparator;
}
}
성가신 일이 내가 옵션을 완전히 유연하게 할 수 있습니다.
niceFormat({decimalPlaces: 3})
을 호출하면 defaultOptions
속성이 decimalPlaces
으로 바뀝니다.
defaultOptions
에 속성이있는 횟수만큼 if 문을 쓰는 것을 싫어합니다.
defaultOptions
의 속성 값을 유연하게 덮어 쓸 수있는 좋은 방법이 있습니까?
기본적으로 자바 스크립트의 객체에 대해 array_merge
을 찾고 있습니다.
UPDATE :
내가 콴타스와 크레용와 폴 의견에서 답변을했다이 쓴 :
Number.prototype.niceFormat = function(options) {
var defaultOptions = {
thousandSeparator: ',',
leftPad: 0,
decimalPlaces: 2
};
var env = defaultOptions;
if (typeof options != 'undefined') {
for (option in env) {
if (options.hasOwnProperty(option)
&& typeof options[option] != 'undefined') {
env[option] = options[option];
}
}
}
어쨌든이 더욱 개선 할 수 있습니까?
'options.option'을 사용하면'option'의 값이 아닌'option'이라는 속성을 찾습니다. 이 버전을 만들기 전에'options [option]' –
을 사용하여 약 5 가지 편집을해야합니다. 괜찮아? –
'defaultOptions'은 _function_ 내에 있으므로'options'의 속성을'defaultOptions'에 적용하고 나중에 속성을 확인할 때'defaultOptions'를 사용하십시오. 'defaultOptions'가 공유되면, _function_,'var env = {}'에 새로운 빈 _Object_를 만들고'defaultOptions'를 복사 한 다음'options'를 복사 한 다음'env'를 사용하십시오. –