繁体   English   中英

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

[英]Using Call Method to Reference a Property in an Object - JavaScript

我有以下对象:

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

我可以调用getAge()方法

myObject.getAge();

我将在弹出窗口中得到33。

我想通过更改引用的对象在警报框中获取23。 我在想类似以下的东西

myObject.getAge.call(this);

我的理解是,通过将该呼叫方法,我改变在参考getAge()方法到的myObject ,然后应该允许警告框返回23 Unfortuntaely,结果仍然是33。

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

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

使用构造函数可能会更好,因为在那里被搞乱了。 查看如何在SO任何其他答案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();

为什么不简单地:

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

您可以这样做:

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

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

getAge(myObject) // Alerts undefined

getAge.call(myObject) // Alerts 23

这样,您可以使用所有具有age属性的对象。

这是一个有效的小提琴 ,也请检查浏览器控制台

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM