ITPub博客

首页 > 应用开发 > IT综合 > UI5 control inheritance implementation question

UI5 control inheritance implementation question

原创 IT综合 作者:i042416 时间:2020-03-12 08:55:17 0 删除 编辑

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,怎么弄?

只需要这样:


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24475491/viewspace-2679722/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
测试

注册时间:2018-01-20

  • 博文量
    3822
  • 访问量
    1982284