javascript对象中具有相同名称的函数和函数组

时间:2017-10-23 07:54:51

标签: javascript

我在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

2 个答案:

答案 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();