我有一个在创建对象之前定义的函数。此预定义函数使用'this'关键字来更改对象中属性的值。在对象内部,我有一个方法,用一个参数调用预定义的方法。但是在调用此方法后我尝试打印应该更改的属性的值,它仍然保持不变。我该如何解决这个问题?
var setName = function(yourName){
this.name = "Your name is " + yourName;
};
// create an object called `human`
var human = {
name: "Nothing here yet",
setHumanName: function(name) {
setName(name);//Name should be changed now
}
};
human.setHumanName("Emeka");
console.log(human.name); //this does not print the new value of name
答案 0 :(得分:2)
您应该在对象上下文中调用该函数:
setHumanName: function(name) {
setName.call(this, name);
}
答案 1 :(得分:1)
只需使用
var human = {
name: "Nothing here yet",
setHumanName: setName // no invocation, only assigning the function
};
为明确调用 on 对象上的任意函数(以便将this
keyword设置为该对象),请使用函数的call
method。