javascript - Prototype & Extend in SAPUI5 (Component.js) - Stack Overflow

I was trying to implement Component.js in my SAPUI5 application but unable to understand .extend &

I was trying to implement Component.js in my SAPUI5 application but unable to understand .extend & .prototype.init.apply method in below piece of code.

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);
        }
    });
});

Can someone please explain?

P.S. I am beginner to OO Javascript.

I was trying to implement Component.js in my SAPUI5 application but unable to understand .extend & .prototype.init.apply method in below piece of code.

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);
        }
    });
});

Can someone please explain?

P.S. I am beginner to OO Javascript.

Share Improve this question asked Mar 29, 2016 at 11:36 RahulRahul 1513 silver badges17 bronze badges 0
Add a ment  | 

2 Answers 2

Reset to default 5

What they're doing here is very Java-ish. With extend they're creating a subclass of UIComponent.

In this subclass the init method is overridden. When you override a method of the parent object, it's a good practice to call the parents original method from the method that overrides it. By doing so, you're avoiding unexpected situations such as variables that have not been defined at the parent etc. Calling the parent's original method is exactly what the init.apply statement is doing. It's doesn't make sense to me to do this twice though.

To give you some hints:

  1. extend es from from sap.ui.base.Object which delegates to sap.ui.base.ManagedObject.createClass(). Thanks to @schnoedel to point it out.

  2. prototype.init.apply and arguments object.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744351351a4569995.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信