问题描述
我有理由相信我想要的东西是可能的,但我没有正确表达,并且在寻找它时遇到了麻烦。我想要实现的目标如下:
想象一下,我有一个像这样的通用对象 obj
:
const obj={
job:function(){},age:function(){},school:function(){}
}
我希望能够将它称为具有可变长度的对象属性的链式列表,然后在最终方法中访问该链。一些例子:
js
obj.job.school.age.job.school() // in the school body,I should know 'job.school.age.job' and that I am `school`
obj.job.school() // in the school body,I should know 'job' and that I am `school`
obj.job.job.job() // in the job body,I should know 'job.job' and that I am `job`
格式无关紧要。它不必是字符串。主要的一点是,在最后一个方法中,我应该知道在这个实例上到达我的属性链。属性应该能够作为函数或普通属性链接。
在我看来,有两个问题需要解决。首先是链接部分。我想我用以下方法解决了那部分: js
Object.setPrototypeOf(obj.job,obj)
Object.setPrototypeOf(obj.school,obj)
Object.setPrototypeOf(obj.age,obj)
这使得对象可以在每个键上动态链接。因此,例如它允许:
obj.job.job.school.job.age.age.school.job.school.age.age.job()
但我被困在第二部分。那就是知道我们如何到达方法体内部的位置。因此,在上面的最后一个 job
方法中,应该知道它是 job
,并且在这个实例中,它前面的属性是:job.job.school.job.age.age.school.job.school.age.age
。
我希望这不会太混乱。如果有什么不清楚的,我会编辑。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)