我试图在我的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
语句正在执行的操作。不过,对我而言,重复两次是没有意义的。