调用对象和函数返回对象

时间:2014-05-04 06:24:16

标签: javascript

嘿伙计们我已经尝试了一些javascript代码来绑定两个函数。我的代码是..

var b = {name: "sav",age: "20"}

var c = function() { 

return 5;

}

b.c({name: "oops",age: "12})

当我在控制台上调用类似的内容时..我收到错误undefined is not a function

问题是我需要访问名称属性b.c.name ..如果我打电话给b.c.name它必须返回oops ..我怎么能这样做..为什么呢?我拨打b.c({});时会收到错误。

希望你们能帮帮我..谢谢

3 个答案:

答案 0 :(得分:3)

b.c不存在,因此它会解析为undefinedundefined不是函数,因此您的错误消息来自。

答案 1 :(得分:2)

您对ObjectFunction之间的区别感到困惑。

在您的示例中,bObject,包含2个属性,nameage

当您撰写b.c时,您尝试访问b名为c属性,但该{<1}}不存在,因为b只有nameage属性。

然后,当您致电b.c({})时,您尝试将b.c称为Function,但由于b.c不存在,其值为{{1}所以它会抛出一个错误,你试图将undefined称为函数。

您可以像undefined那样为Object分配c,如下所示:

b

现在您可以像这样访问这些属性:

var c = {name: "oops",age: "12"};

答案 2 :(得分:0)

点符号是访问对象的属性和方法的方式。如果您想要做的只是将数据传递给函数,则不需要使用点表示法:

function doSomething(arg1, arg2, etc...) {
    // do stuff with passed args
}

b = {
    name: 'John',
    age: 25
}

doSomething(b);

如果您需要将该函数作为特定对象的范围,则需要使其成为对象的方法:

b.doSomething = function() { //etc... }

b = {
    name: 'John',
    age: 25,
    getAge: function() {
        return b.age;
    }
}

b.getAge();