`
JerryWang_SAP
  • 浏览: 1029066 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

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

只需要这样:

 

0
0
分享到:
评论

相关推荐

    inheritance

    5. 位运算:用于模拟基因的交叉和变异,尤其是在处理二进制编码的基因时。 6. 循环和条件判断:控制遗传算法的迭代过程和结束条件。 7. 编程技巧:如递归、函数封装等,使代码更清晰、可维护。 这个程序包可能包含...

    Inheritance

    《继承在Java编程中的应用与理解》 继承是面向对象编程中的核心概念之一,它允许开发者从已有的类(父类或超类)派生出新的类(子类或派生类),以此来实现代码的复用和扩展。在Java编程语言中,继承通过关键字`...

    ios demo,自定义一个类,接口interface和implementation

    2. **继承(Inheritance)**: 如果类继承自其他类,我们可以使用冒号(`:`)后面跟着父类的名称,如`@interface MyCustomClass : NSObject`,表示`MyCustomClass`继承自`NSObject`。 3. **属性(Properties)**: 使用`...

    inheritance---derived-class.rar_inheritance

    在C++编程语言中,继承(Inheritance)是面向对象编程的一个核心概念,它允许一个类(称为子类或派生类)从另一个类(称为基类或父类)继承特性。这种特性使得代码重用变得简单,同时也能实现多态性。"inheritance--...

    Advanced JavaScript (closures,prototype,inheritance)

    JavaScript,作为一种广泛应用于Web开发的脚本语言,其高级特性如闭包(closures)、原型(prototype)和继承(inheritance)是理解其精髓的关键。本文将深入探讨这些概念,帮助开发者更好地掌握JavaScript的核心。 ...

    ACE-inheritance

    ### ACE 类结构与继承关系详解 #### 概述 ACE(Adaptive Communication Environment)是一个广泛应用于网络编程的高性能异步通信框架,它提供了一系列高级、可重用的C++类库,旨在简化分布式系统的开发。...

    EC.zip_eC_inheritance

    How do you choose between inheritance and templates? Between templates and generic pointers? Between public and private inheritance? Between private inheritance and layering? Between function ...

    Topic 10 Inheritance.md

    Topic 10 Inheritance.md

    package-and-inheritance.zip_inheritance

    5. **泛型**:泛型是一种强大的工具,用于在编译时检查类型安全,并减少类型转换的需要。它可以应用于类、接口和方法,限制可以存储在集合中的对象类型。 6. **JVM**:Java虚拟机(JVM)是Java程序运行的平台,它...

    C 程序设计教学课件:CHAPTER 8 INHERITANCE.ppt

    5. **8.5 Constructors and Destructors Under Inheritance** - 在继承中,派生类可以调用基类的构造函数和析构函数,以确保正确初始化和清理资源。 6. **8.6 Name Hiding** - 名称隐藏意味着派生类可以重新定义...

    Chapter7_Java_Inheritance.rar_inheritance

    在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和行为。这个概念是第7章“Java继承”中重点讲解的内容。通过继承,我们可以创建具有共同特性...

    Canalization of Development and the Inheritance of Acquired Characters

    在探讨《渠化的发展与后天性状的遗传》这一主题时,我们首先需要了解文章的核心概念及其背景。本文由沃丁顿(Waddington)于1942年发表在《自然》杂志上,主要关注了两个核心议题:发展生物学中的“渠化”现象以及...

    spring-jpa-inheritance

    1. **单表继承(Single Table Inheritance)**:所有子类的数据都存储在同一个表中,通过一个特定的字段(通常是`@DiscriminatorColumn`注解标记的)来区分不同子类的对象。这种策略的优点是简单,但可能导致表结构...

    C程序设计教学课件:CHAPTER8INHERITANCE.pptx

    在CHAPTER8INHERITANCE.pptx中,主要讲解了C++中的继承及其相关知识点。 8.1 引入 继承的主要目的是促进代码重用和表达程序组件之间的自然关系。例如,可以创建一个`Vehicle`基类,然后派生出如`Car`, `SaloonCar`,...

    inheritance_art.zip

    5. **属性继承与覆盖**:子类可以继承父类的变量(属性),并可以覆盖或扩展这些属性。这允许我们为不同角色设定不同的属性值,如生命值、攻击力等。 6. **多态性**:继承还带来了多态性,即同一操作可以作用于不同...

    Java_programming_code_inheritance_Thread.rar_inheritance

    在Java编程中,继承是面向对象编程的一个核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。这里的主题聚焦于Java中的线程(Thread)类的继承,通过这种方式来创建自定义线程。下面将详细讨论Java继承...

    La-POO-con-Java.rar_inheritance

    Basic manual of java for beginners with simple and easy descriptions. Inheritance, composition, collections, files, interfaces

    polymorphism&inheritance feature example in C++

    this is an example for polymorphism and inheritance feature of OOP C++. A reference for C++ starter.

Global site tag (gtag.js) - Google Analytics