我在JavaScript
中有以下对象。我对如何访问object.demo()
和object.demo.inner()
感到困惑。 object.demo.inner()
工作正常但object.demo
无效。我要求名称应该相同。为什么函数不会在这里超载?
var object = {
// object.demo()
demo: function(str, pathStr) {
console.log('function 1')
},
demo: {
// object.demo.inner()
inner: function () {
console.log('inner')
}
}
}
object.demo.inner() //working
object.demo() //not working
答案 0 :(得分:5)
函数是javascript中的一个对象,因此它可以具有其他属性。因此,您可以将inner
函数分配给object.demo
对象的属性:
var object = {
// object.demo()
demo: function(str, pathStr) {
console.log('function 1')
}
}
// object.demo.inner
object.demo.inner = function () {
console.log('inner')
}
答案 1 :(得分:4)
实际上没有函数object.demo
,因为你用另一个对象覆盖了同一个对象。 ES5中'strict mode'
禁止此行为,但ES6中禁止此行为。
您可以使用外部对象并稍后将该函数分配给inner
属性。
var object = {
demo: function(str, pathStr) {
console.log('function 1')
}
};
object.demo.inner = function () { console.log('inner'); };
object.demo.inner();
object.demo();