Javascript 是否可以修改或继承构造函数?
我想向某些对象添加其他属性,例如Javascript 是否可以修改或继承构造函数?,javascript,javascript-objects,Javascript,Javascript Objects,我想向某些对象添加其他属性,例如window.URL.params:{}, 我假设这不能用window.URL对象完成,因为必须修改构造函数。所以我创建了一个新的对象window.NEWURL 按原样编码 函数NEWURL(url) { urlObj=新URL(URL); for(urlObj中的道具) { 如果(urlObj.hasOwnProperty(prop)) { 此[prop]=urlObj[prop]; } }; var请求={}; var pairs=url.substring(
window.URL.params:{}
,
我假设这不能用window.URL对象完成,因为必须修改构造函数。所以我创建了一个新的对象window.NEWURL
按原样编码
函数NEWURL(url)
{
urlObj=新URL(URL);
for(urlObj中的道具)
{
如果(urlObj.hasOwnProperty(prop))
{
此[prop]=urlObj[prop];
}
};
var请求={};
var pairs=url.substring(url.indexOf('?'))+1.split('&');
对于(变量i=0;i
非常感谢 您可以扩展URL对象,向其添加其他属性,而不是试图修改现有对象(不改变您不拥有的对象也是一种好的做法) 无论何时需要此对象,都应该调用函数来获取它,而不是直接调用window.url 这是jQuery用于dom的方法(基本上是包装dom对象,而不是变异) 最简单的方法是继承:
function myUrl() {
var url = Object.create(new URL());
// now mutate url however you want.
url.foo = "c00l";
return url;
}
// Another approach
function MyURL() {
URL.call(this);
// Do what you want.
this.foo = "c00l";
}
MyURL.prototype = Object.create(URL.prototype);
是的,您可能可以覆盖
window.URL
。然而,一个习惯通常比一个习惯好。
function myUrl() {
var url = Object.create(new URL());
// now mutate url however you want.
url.foo = "c00l";
return url;
}
// Another approach
function MyURL() {
URL.call(this);
// Do what you want.
this.foo = "c00l";
}
MyURL.prototype = Object.create(URL.prototype);