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

Using a pre-defined method to change a property of an object Javascript

本文关键字:对象 属性 方法 预定义      更新时间:2023-09-26

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

你应该在对象上下文中调用这个函数:

setHumanName: function(name) {
    setName.call(this, name);
}

就用

var human = {
    name: "Nothing here yet",
    setHumanName: setName // no invocation, only assigning the function
};

对于在对象上显式调用任意函数(以便它们的this关键字设置为该对象),使用该函数的call方法。