如何&为什么在代码中使用SUPER

How & Why to use SUPER in code?

本文关键字:SUPER 代码 amp 为什么 如何      更新时间:2023-09-26

我与一些高级JavaScript人员合作,他们在代码中使用了SUPER关键字。我承认,我不太清楚一个人如何以及为什么可以使用它。

有人能指导我或教我如何精通它的用法和推理吗?

以下是一些例子:

openup: function( $super ) {
    $super();
    this.shop.enable_access();
}

addLeft: function( data ) {
    var cell = Element('td');
    if ( data.item_data ) {
        var item = new SRIL(data.item_data);
        item.attach(cell);
        item.show();
    }
    return cell;

}

var SRIL = Class.create(Module, {
initialize: function( $super, data ) {
    $super({ dom: 'show_line' });
    this.data = data;
    if ( data.Type[0] == 'Car' ) {
        //some code
    }
    else {
        // some code
    }
}

});

JavaScript没有这样的东西。

更新:您应该查看此处使用的库的文档。这是一个库功能,而不是语言功能。

由于Javascript没有经典继承,而是根据原型/函数模型进行结构,开发人员已经进行了各种尝试来重新创建经典模型。super就是其中一个策略的一部分。它解决的特殊问题是在子对象与父对象具有相同方法(即使只是构造函数)的情况下。如果不将super创建为父方法的别名,则访问此类方法会变得有些麻烦(在某些情况下,甚至不可能)。

John Resig有一个包装可以很好地展示这一点。注意他在第一个例子中使用_super()来调用父对象的dance方法。