我有以下对象:
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
的引用?
答案 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,同时检查浏览器控制台