我有一个名为“ baseScreen”的基类,如下所示:digient.casino.ui.baseScreen = function() { goog.debug.Logger.getLogger('demo').info('baseScreen'); this.background = goog.dom.createDom('div', {'class': 'backgroundHolder'}, ''); console.log(this);}digient.casino.ui.baseScreen.background = null;digient.casino.ui.baseScreen.prototype.load = function() { var self = this; goog.debug.Logger.getLogger('demo').info('baseScreen : load'); goog.dom.appendChild(document.body, this.background); <!-- screen setup code goes here -->};digient.casino.ui.baseScreen.prototype.resize = function(newSize) { goog.debug.Logger.getLogger('demo').info('baseScreen : resize');};在onLoad中,如果我将baseScreen加载为var sc = new digient.casino.ui.baseScreen();sc.load();它的工作正常。然后,我得到一个名为registerScreen的屏幕,如下所示:digient.casino.ui.registerScreen = function() { goog.debug.Logger.getLogger('demo').info('registerScreen'); digient.casino.ui.baseScreen.call();};goog.inherits(digient.casino.ui.registerScreen, digient.casino.ui.baseScreen);当我尝试加载registerScreen的对象时,它在我尝试将this.background附加到document.body并在第4行中奇怪地console.log(this)的行上引发了错误,打印了window对象而不是baseScreen或对象。我的代码有什么问题?我是否需要重写派生类中的负载并调整其大小? (尝试过此方法,但失败了)或其他任何问题? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您必须调用baseScreen将当前的registerScreen实例:digient.casino.ui.baseScreen.call(this);否则,您的函数调用等效于digient.casino.ui.baseScreen(),因此this引用全局对象window。 (adsbygoogle = window.adsbygoogle || []).push({});
10-08 18:23