Javascript 修改_init()对parent()有何影响?

Javascript 修改_init()对parent()有何影响?,javascript,gnome-shell,gnome-shell-extensions,Javascript,Gnome Shell,Gnome Shell Extensions,我正在尝试更新Gnome外壳扩展。在它中,我重写了对象的_init方法,我是这样做的: function newInitAppSwitcherPopup() { this.parent(); ... } AltTab.AppSwitcherPopup.prototype._init = newInitAppSwitcherPopup; 新方法在以下情况下失败: JS错误:TypeError:无法调用方法“parent” 这里我发现非常令人惊讶的是parent

我正在尝试更新Gnome外壳扩展。在它中,我重写了对象的_init方法,我是这样做的:

function newInitAppSwitcherPopup() {
     this.parent();        
     ...
}
AltTab.AppSwitcherPopup.prototype._init = newInitAppSwitcherPopup;
新方法在以下情况下失败:

JS错误:TypeError:无法调用方法“parent”

这里我发现非常令人惊讶的是
parent
方法实际上存在(如果我更改名称,我会得到一个“notdefined”错误)

我不明白的是,原来的AppSwitcherPopup.\u init仍然在使用对parent()的调用


这在Gnome 3.12下运行得很好,但在Gnome 3.16中被破坏了……我想他们在他们的GObject或继承模型中做了一些更改?

我有一个类似的代码用于我的配置小部件

const MenuConfigWidget = new GObject.Class({
  Name: 'SimpleMenu.Prefs.MenuConfigWidget',
  GTypeName: 'SimpleMenuMenuConfigWidget',
  Extends: Gtk.Grid,

  _init: function(params) {
    this.parent({... }); 
    ...
  }
});

您是否扩展了类,我们的just monkey patch是_init函数?

正如您在提供的代码中看到的,我只是通过原型对_init函数进行了monkey patch…您是否建议扩展该类?不确定这是否是问题所在。另一种可能性是,GObject javascript内省添加了某种检查,阻止您在没有提供正确参数的情况下调用parent()。