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,怎么弄?
只需要这样:
相关推荐
5. 位运算:用于模拟基因的交叉和变异,尤其是在处理二进制编码的基因时。 6. 循环和条件判断:控制遗传算法的迭代过程和结束条件。 7. 编程技巧:如递归、函数封装等,使代码更清晰、可维护。 这个程序包可能包含...
《继承在Java编程中的应用与理解》 继承是面向对象编程中的核心概念之一,它允许开发者从已有的类(父类或超类)派生出新的类(子类或派生类),以此来实现代码的复用和扩展。在Java编程语言中,继承通过关键字`...
2. **继承(Inheritance)**: 如果类继承自其他类,我们可以使用冒号(`:`)后面跟着父类的名称,如`@interface MyCustomClass : NSObject`,表示`MyCustomClass`继承自`NSObject`。 3. **属性(Properties)**: 使用`...
在C++编程语言中,继承(Inheritance)是面向对象编程的一个核心概念,它允许一个类(称为子类或派生类)从另一个类(称为基类或父类)继承特性。这种特性使得代码重用变得简单,同时也能实现多态性。"inheritance--...
JavaScript,作为一种广泛应用于Web开发的脚本语言,其高级特性如闭包(closures)、原型(prototype)和继承(inheritance)是理解其精髓的关键。本文将深入探讨这些概念,帮助开发者更好地掌握JavaScript的核心。 ...
### ACE 类结构与继承关系详解 #### 概述 ACE(Adaptive Communication Environment)是一个广泛应用于网络编程的高性能异步通信框架,它提供了一系列高级、可重用的C++类库,旨在简化分布式系统的开发。...
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
5. **泛型**:泛型是一种强大的工具,用于在编译时检查类型安全,并减少类型转换的需要。它可以应用于类、接口和方法,限制可以存储在集合中的对象类型。 6. **JVM**:Java虚拟机(JVM)是Java程序运行的平台,它...
5. **8.5 Constructors and Destructors Under Inheritance** - 在继承中,派生类可以调用基类的构造函数和析构函数,以确保正确初始化和清理资源。 6. **8.6 Name Hiding** - 名称隐藏意味着派生类可以重新定义...
在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和行为。这个概念是第7章“Java继承”中重点讲解的内容。通过继承,我们可以创建具有共同特性...
在探讨《渠化的发展与后天性状的遗传》这一主题时,我们首先需要了解文章的核心概念及其背景。本文由沃丁顿(Waddington)于1942年发表在《自然》杂志上,主要关注了两个核心议题:发展生物学中的“渠化”现象以及...
1. **单表继承(Single Table Inheritance)**:所有子类的数据都存储在同一个表中,通过一个特定的字段(通常是`@DiscriminatorColumn`注解标记的)来区分不同子类的对象。这种策略的优点是简单,但可能导致表结构...
在CHAPTER8INHERITANCE.pptx中,主要讲解了C++中的继承及其相关知识点。 8.1 引入 继承的主要目的是促进代码重用和表达程序组件之间的自然关系。例如,可以创建一个`Vehicle`基类,然后派生出如`Car`, `SaloonCar`,...
5. **属性继承与覆盖**:子类可以继承父类的变量(属性),并可以覆盖或扩展这些属性。这允许我们为不同角色设定不同的属性值,如生命值、攻击力等。 6. **多态性**:继承还带来了多态性,即同一操作可以作用于不同...
在Java编程中,继承是面向对象编程的一个核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。这里的主题聚焦于Java中的线程(Thread)类的继承,通过这种方式来创建自定义线程。下面将详细讨论Java继承...
Basic manual of java for beginners with simple and easy descriptions. Inheritance, composition, collections, files, interfaces
this is an example for polymorphism and inheritance feature of OOP C++. A reference for C++ starter.