私の質問を説明するのに役立つ次のコンストラクターURL
(図 1 ) があります。このメソッドisValidUrl
は、オプションのパラメーターを取りますoptUrl
。デフォルトでは、インスタンス プロパティurl
が使用されます。ただし、引数が設定されている場合は、引数によってオーバーライドされoptUrl
ます。
これが優れたソフトウェア エンジニアリングの実践であるかどうかはわかりません。
図1:
function Url(url) {
this.url = url;
this.isValidUrl = function (optUrl) {
var url;
// Questionable pattern
if (typeof(optUrl) === 'undefined') {
url = this.url;
} else {
url = optUrl;
}
// 1. call: 'http://www.example.com'
// 2. call: 'http://www.exampl2.com'
console.log(url);
return url !== ''; // Very simple check
}
}
var u = new Url('http://www.example.com');
console.log(u.isValidUrl()); // true
console.log(u.isValidUrl('http://www.exampl2.com')); // true