使用调用方法引用对象中的属性 - JavaScript

时间:2013-12-18 20:40:46

标签: javascript

我有以下对象:

myObject = {
    color: "yellow",
    age: 23,
    nationality: "usa",
    getAge: function(){
        var age = 33;
        alert(age);
    }
}

我可以调用getAge()方法

myObject.getAge();

我会在弹出窗口中获得33分。

我希望通过更改引用对象,在警告框中输入23。我在想类似下面的内容

myObject.getAge.call(this);

我的理解是,通过将 this 传递给call方法,我将getAge()方法中 this 的引用更改为{{1然后应该允许警报框返回23.但不幸的是,结果仍然是33。

如何将引用更改为myObject的引用?

3 个答案:

答案 0 :(得分:1)

myObject = {
    color: "yellow",
    age: 23,
    nationality: "usa",
    getAge: function(){
        alert(this.age);
    }
}
myObject.getAge();

使用构造函数可能会更好,因为这个在那里被破坏了。请参阅关于this如何运作的任何其他答案。

function person(){
    this.color = "yellow";
    this.age = 23;
    this.nationality = "usa";
}
person.prototype.getAge = function(){
    alert(this.age);
};

var p = new person();
p.getAge();

答案 1 :(得分:0)

为什么不简单:

myObject = {
    color: "yellow",
    age: 23,
    nationality: "usa"
}
myObject.getAge = function() { return myObject.age; };

答案 2 :(得分:-1)

你可以这样做:

function getAge(){
  alert(this.age)
}

myObject = {
    color: "yellow",
    age: 23,
    nationality: "usa"
}

getAge(myObject) // Alerts undefined

getAge.call(myObject) // Alerts 23

通过这种方式,您可以使用具有年龄属性的所有类型的对象。

这是一个有效的fiddle,同时检查浏览器控制台