我试图在我的SAPUI5应用程序中实现Component.js,但无法在下面的代码中理解 .extend和.prototype.init.apply方法

sap.ui.define([
"sap/ui/core/UIComponent"
], function (UIComponent) {
    "use strict";
    return UIComponent.extend(""** , {**
        init: function () {
            UIComponent.prototype.init.apply(this, arguments);
            // console.log(UIComponent.extend);
            UIComponent.prototype.init.apply(this, arguments);
        }
    });
});

有人可以解释一下吗?

附言我是OO Javascript的初学者。

最佳答案

他们在这里所做的是非常Java风格的。他们使用extend创建了UIComponent的子类。

在此子类中,init方法被覆盖。当您覆盖父对象的方法时,从覆盖它的方法中调用父对象的原始方法是一种好习惯。这样,您可以避免意外情况,例如尚未在父级定义的变量等。调用父级的原始方法正是init.apply语句正在执行的操作。不过,对我而言,重复两次是没有意义的。

10-04 15:42