假设我有我的对象,foo:
var foo = {
name: "fooName",
consoleLog: function() {console.log("foo!")}
}
...但我不想必须指定 foo.consoleLog()
才能调用该函数,我只想调用 foo()
为了获得相同的效果,并保留该对象的所有其他规范,例如上面显示的 name
,因此 foo.name
仍应返回fooName
.
换句话说,我如何操作它以便 foo()
将 foo!
记录到控制台,和 foo.name
将返回 fooName
?
还值得注意的是,foo
将是另一个对象的子对象。
所以,它可能看起来更像是这样:
var bar = {
foo: {
name: "fooName",
consoleLog: function() {console.log("foo!")}
},
name: "barName"
}
我试图寻找这个,但我不知道该怎么调用它——主函数?不,那返回了太多 Java。隐含函数?不,这些结果没有帮助...所以现在我在这里。
我该怎么做?
最佳答案
你可以这样做:
var bar = {
foo: function fooName() { console.log('foo!'); },
name: 'barName'
};
bar.foo.anyPropertyButName = 'anyValue';
这样 foo
是一个函数(可以这样调用:bar.foo();
)并且有一个值为 的 name 属性fooName
.
如果您仍然需要 bar.foo.consoleLog
作为函数,只需添加:
bar.foo.consoleLog = bar.foo;
关于javascript - 定义 Javascript 对象的 'implied' 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793616/