使用预定义的方法来更改对象Javascript的属性

时间:2013-04-25 11:18:55

标签: javascript

我有一个在创建对象之前定义的函数。此预定义函数使用'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

2 个答案:

答案 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