我有以下构造函数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