嘿伙计们我已经尝试了一些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({});
时会收到错误。
希望你们能帮帮我..谢谢
答案 0 :(得分:3)
b.c
不存在,因此它会解析为undefined
。 undefined
不是函数,因此您的错误消息来自。
答案 1 :(得分:2)
您对Object
和Function
之间的区别感到困惑。
在您的示例中,b
是Object
,包含2个属性,name
和age
。
当您撰写b.c
时,您尝试访问b
名为c
的属性,但该{<1}}不存在,因为b
只有name
和age
属性。
然后,当您致电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();