在父类中获取“this”

时间:2014-04-14 15:57:27

标签: javascript oop

我的问题是我无法在父类中访问正确的对象。

家长班:

ViewController.prototype.display = function() {
    console.log(this); // Log a Window object
};

儿童班:

ParentMissionsViewController.prototype = Object.create(ViewController.prototype);
ParentMissionsViewController.prototype.constructor = ParentMissionsViewController;
ParentMissionsViewController.prototype.parent = ViewController.prototype;

ParentMissionsViewController.prototype.display = function() {
    // Other stuff here
    this.parent.display.call();
};

如果有人能解释我的话,我不知道为什么这不是我现在的对象?

2 个答案:

答案 0 :(得分:3)

如果你打电话

this.parent.display();

然后它看起来像:

var that = this.parent;
that.display();

你,正如我想的那样,你想避免。使用call是一种好方法,但您需要提供this的价值:

this.parent.display.call(this /* , arg, arg... */);

请参阅the signature of call at MDN

答案 1 :(得分:0)

尝试

this.parent.display();

使用call调用方法时,需要指定自定义此值作为第一个参数。您在当前代码中获得的这个值是多少?我猜不定?