在javascript中获取实例父属性访问器链 问题 01:问题 02

问题描述

我有理由相信我想要的东西是可能的,但我没有正确表达,并且在寻找它时遇到了麻烦。我想要实现的目标如下:

想象一下,我有一个像这样的通用对象 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 (将#修改为@)