UI5 control inheritance implementation question

Posted sap-jerry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UI5 control inheritance implementation question相关的知识,希望对你有一定的参考价值。

C同事问了我这个问题。
使用下列这段代码extend UI5标准的控件。

技术图片

问题1:为什么new 一个JerryButton时,line 35会触发?
var oJerryButton = new JerryButton({ application: oApplication } );

技术图片

答案:
debug extend的实现, 在line 330里把调用extend指定的constructor赋给fnClass

技术图片

然后在line 352把fnClass赋给fnClass.prototype.constructor. 这样,每次用fnClass这个构造器new新的instance时,constructor指向的function会自动被call到。

技术图片

问题2

为什么把constructor的赋值放到extend function外面,由application自己显式赋值,但是在new的时候却不会被调用到了?

技术图片

答案:
原因是此时传入的constructor为undefine,因此fnClass也是undefine

技术图片

所以line 352注入的实际上是line 346动态生成的函数体为fnBaseClass.apply的function,这样当然我们自定义的constructor不会执行了。
如果你非要想在extend外面指定constructor,怎么弄?
只需要这样:

技术图片
技术图片

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
技术图片

以上是关于UI5 control inheritance implementation question的主要内容,如果未能解决你的问题,请参考以下文章

UI5-文档-4.3-Controls

sap.ui.require in SAP UI5 and require in nodejs

sap.ui.require in SAP UI5 and require in nodejs

sap.ui.require in SAP UI5 and require in nodejs

SAP UI5 如何在 xml 视图中附加 HTML

使用XSJS将映像插入SAP HANA表