嘿,伙计们是javascript应用程序开发的新手。我的代码
var obj = {
models: "AN",
collection: {},
person: {},
changeDetails: function(values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
}
babe: function() {
return 5;
}
};
当我像obj.changeDetails({name:"George",age:20}).babe());
一样打电话时,它会引发我Uncaught SyntaxError: Unexpected identifier
是否有可能在javascript中调用objectname.functionname.().anotherfunctionname()
?如果可能,请将其发布为显示其演示的答案..
由于
答案 0 :(得分:3)
您遇到2个语法错误和1个逻辑错误
您在
之后缺少逗号(,
)
changeDetails: function (values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
}
所以它应该是
var obj = {
models: "AN",
collection: {},
person: {},
changeDetails: function(values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
},
babe: function() {
return 5;
}
};
此外,在
之后你有一个太多的右括号()
)
obj.changeDetails({name:"George",age:20}).babe());
应该是
obj.changeDetails({name:"George",age:20}).babe();
最后,为了能够调用对象的方法babe
,您必须在changeDetails
函数中返回它,在此上下文中使用this
是有意义的。
最终解决方案
var obj = {
models: "AN",
collection: {},
person: {},
changeDetails: function(values, babes) {
this.person.name = values.name;
this.person.age = values.age;
return this;
},
babe: function() {
return 5;
}
};
obj.changeDetails({name:"George",age:20}).babe();
答案 1 :(得分:2)
您只想返回this
:
changeDetails: function(values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
return this;
},
答案 2 :(得分:1)
changeDetails
不会返回任何内容。你什么都不能打电话给.babe()
。
var obj = {
models: "AN",
collection: {},
person: {},
changeDetails: function(values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
return obj;
},
babe: function() {
return 5;
}
};
现在你可以链接东西,因为changeDetails
返回一个对象:
obj.changeDetails({name:"George",age:20}).babe();
答案 3 :(得分:0)
这是chaining
,您必须在每个方法中返回obj
:
var obj = {
models: "AN",
collection: {},
person: {},
changeDetails: function (values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
return obj;
},
babe: function () {
return 5;
}
};
答案 4 :(得分:0)
是的,很有可能。您只需要以这样的方式设计您的功能,即它们允许链接功能。例如,
changeDetails: function(values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
return obj; # Return the `obj`
},
现在,函数调用changeDetails
的结果是obj
,现在有babe
函数。所以,你可以像这样调用它
obj.changeDetails({
name: "George",
age: 20
}).babe();
另请注意,您不能在babes
函数中使用第二个参数changeDetails
。所以,您可以删除该参数。
答案 5 :(得分:0)
我必须说,如果您分配宝贝状态,您至少应该像这样返回8 - 10 - 您还需要在更改细节中返回obj。
var obj = {
models: "AN",
collection: {},
person: {},
changeDetails: function(values, babes) {
obj.person.name = values.name;
obj.person.age = values.age;
return obj;
}
babe: function() {
return Math.floor((Math.random()*(10-8+1)+8))
}
};