我正在使用ReactJS,但我认为我的问题可能是一个通用的javascript问题。我有两个班Url
和QueryVars
。我希望Url
能够调用QueryVars
的所有方法,就像我从Url
扩展了QueryVars
一样。所以我做了这样的事情:
export default class Url {
constructor()
{
this.queryVars = new QueryVars();
console.log(this.queryVars);
for(let x in this.queryVars)
{
console.log(x); // this never gets fired
if(typeof this.queryVars[x] == "function")
{
this[x] = this.queryVars[x].bind(this.queryVars);
}
}
}
}
default class QueryVars {
init()
{
/* do something */
}
getQS(key)
{
/* do something */
}
getPage(key)
{
/* do something */
}
}
问题是console.log(x)
不会被解雇。我无法检索this.queryVars
的方法。我在这里做什么错了?
最终,我想向Url.constructor
中分配更多的对象,并绑定这些对象的更多方法,以便好像我正在实现多重继承,或在其他类之外构成一个新类。这样我可以:
do url.getQS() instead of url.queryVars.getQS()
do url.getIP() instead of url.ip.getIP()
etc...
我上面的代码是基于我在这里的这个问题中学到的: Is there a way to print all methods of an object in javascript?