【发布时间】:2017-05-19 08:31:51
【问题描述】:
我有一个同时包含属性和方法的对象:
var foo = {
bar: function(a) {},
baz: 42
}
我正在尝试重组,将所有方法移动到一个新的methods 对象中:
var foo = {
methods: {
bar: function(a) {},
}
baz: 42
}
是否可以删除foo.bar() 同时保持向后兼容性?例如。当用户尝试foo.bar(a) 时,它的别名为foo.methods.bar(a)?
【问题讨论】:
-
只是一个建议,您可能想研究一下 OO JS 与这种方法的对比。
-
如果您删除 foo.bar 则它不存在,因此“用户”将无法“尝试”
foo.bar()- 只要没有“陷阱”,您就可以执行Object.keys(foo.methods).forEach(key => foo[key] = foo.methods[key]);之类的操作" 在任何这些方法中使用this -
向后兼容性是关键。此代码在数百个站点上,删除
foo.bar()会破坏任何期望它的第 3 方代码
标签: javascript proxy alias