`

javascript 通用定义类继承工具方法

 
阅读更多

个人认为,javascript脚本语言算是一种很复杂型的语言,它不像PHP那样简单,那是因为它本身的运用环境实在是多种多样,不同的浏览器环境和其语言本身的独特性质,决定了要学好javascript语言本身实在的太不容易了。兼容不同环境和开发大型JS应用,谈何容易。在这里简单的介绍一下一个工具方法,它可以简化编写javascript类继承步骤。

首先要先回顾一下一般类继承的写法。

例子:

父类是 Rectangle . 子类是 PositionRectangle



测试:


由上步骤可以,在JS里面编写类继承需要不少步骤,接下来介绍的这个工具可以简化这个步骤,这个方法是出自javascript权威指南,不过我不是很确定,原书的例子在borrows那里出现了一些问题,所以加以修改和简化,得出了一下一个版本。这个方法稍微有点复杂,其具体解决问题的步骤是:

获取相关属性——》构造原型链【调用父类构造方法构造原型链——》删除父类的局部属性和方法——》复制借用方法到原型链——》复制自定义方法到原型链——》设置constructor,superclass,classname】——》复制类本身属性和方法——》返回类。



这个方法需要一个data对象为参数,具体属性如下:

//data.name:类的名称

//data.extend:父类的引用

//data.constructor:构造函数

//data.methods:类对象方法

//data.statics:类本身的属性和方法,不属于对象

//data.borrows:表示想从某个类里面借用方法,borrows就是那个类

//data.provides:查询是否本类提供了provides里面所有类的所有方法,如果没有,则中断构造过程,抛出异常

一个简单的例子,实现了和上面哪个例子的同一个继承:



对于大型的JS应用,如果用JS构造大型的富客户端应用,或者实现JS效果框架,类继承的使用绝对是核心技术。要学好JS,切勿好高骛远。

原文链接:http://zhenpengday.blog.163.com/blog/static/165988143201011501630727/

分享到:
评论

相关推荐

    Javascript 继承机制的实现

    尽管ECMAScript并没有像其他语言那样严格地定义抽象类,但有时它的确会创建一些不允许使用的类。通常,我们称这种类为抽象类。 创建的子类将继承超类的所有属性和方法,包括构造函数及方法的实现。记住,所有属性和...

    基于JQUERY的菜单栏插件

    花生米AJAX-UI系列之:基于JQUERY的GooMenubar工具栏类UI控件0.1版 特点: 可定义四个边框有没有显示 ... 本类与工具栏GooToolbar类没有继承与被继承的关系 经测试,兼容IE6--IE8,Firefox,chrome浏览器。

    extendable-base:用于设置 Javascript 类的简单库

    利用Backbone.extend语义以通用方式定义子类,使设置 javascript 类层次结构变得简单。 为方便起见,添加逻辑以便Base类的默认构造函数调用继承链中所有类的initialize函数,将相同的参数传递给每个类。 基本用法 ...

    ts-generator:从KotlinJavaJVM类生成TypeScript定义

    当数据类被序列化为JSON并在JavaScript或TypeScript Web前端中处理时,TypeScript定义非常有用,因为它们可以在许多IDE和编辑器中启用上下文感知的类型检查和自动完成功能。 ts-generator支持: 具有或不具有显式...

    波兰语Javascript前端指导程序:Javascript,React,Redux,Angular

    创建一个将包含通用方法的基类。 然后创建2个子类(从基础继承):ES6样式的IntBuilder和ES5样式的StringBuilder。 核心JS 101 循环菜单 创建一个简单的循环菜单,对键盘的箭头按钮(←和→)作出React。 菜单应...

    redefine:用于智能对象属性定义的轻量级实用程序

    是定义类的最新,最能证明未来,积极维护且广泛兼容的方法。 如果您打算在这里丰富原型,请查看es-class ,它很可能会提供您需要的一切以及更多其他信息。 如果您可以在这里将属性懒惰地分配给通用对象或原型,请...

    explodingnumbers:Javascript游戏

    设计文档班级定义继承和其他类通用的一些方程(如随机数生成器和随机颜色生成器) 功能:继承拥有制作移动类的主要功能(定义一个 fabric.js 对象,找到它的位置,然后向下移动它)继承自移动对象。 最初旨在使过渡...

    【卷一/共两卷】AJAX实战pdf高清版90M

    B.2.4 原型的继承 B.2.5 JavaScijpt对象的反射 B.2.6 接口和“鸭子类型” B.3 方法和函数 B.3.1 函数是一等公民 B.3.2 向对象附加函数 B.3.3 从其他对象借用函数 B.3.4 Ajax事件处理和函数上下文 B3.5 JavaScript中...

    通用分页组件

    继承实现分页的抽象类AbstractPage 的两个抽象方法; 2.调用WebPageUtils.doAction方法传入参数即可 3.直接获取需要满足条件的记录 <br/> 下面举了一个例子来说明使用方法: <br/>package org....

    JavaScript设计模式之适配器模式介绍

    实际开发环境下,由于旧的系统,或第三方应用提供的接口,与我们定义的接口不匹配,在以面向接口编程的环境下,就无法使用这样旧的,或第三方的接口,这时我们就使用适配类继承待适匹配的类,并让适配类实现接口的...

    C++ Template 基础篇(一):函数模板详解

    C++是一门强类型语言,所以无法做到像动态语言(python javascript)那样子,编写一段通用的逻辑,可以把任意类型的变量传进去处理。泛型编程弥补了这个缺点,通过把通用逻辑设计为模板,摆脱了类型的限制,提供了...

    jQWidgets:Angular,Vue,React,Web组件,Blazor,Javascript,jQuery和ASP .NET Framework,

    框架核心提供了基本功能,例如对小部件扩展和继承的支持,小部件设置,内部事件处理和路由,属性更改通知,设备和浏览器兼容性检测与调整。 强调 具有完整的用户界面小部件。 适用于PC,触摸和移动设备。 丰富的...

    core:NodeJS ORM

    使用“类”继承创建强大插件的简便方法。 通用数据库/数据源连接器(MongoDB,SQL,Redis,REST,CSV ...)。 使用ECMAScript的最新功能(现代javascript)。 特征 通用连接器,用于绑定各种数据库或数据源。 ...

    JavaScript高级教程

    3.5 定义类或对象..............................................78 3.5.1 工厂方式..............................................78 3.5.2 构造函数方式..............................................80 3.5.3...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    universal-redux:一个 npm 包,可让您直接使用通用(同构)渲染来编写 React 和 Redux。 如果需要,仅管理 Express 设置或 Webpack 配置

    这个工具运行良好,但不再推荐用于绿地项目。 将视为当前维护的精神继承者。 什么和为什么 Universal Redux 是一个 npm 包,当用作项目中的依赖项时,它提供了一个通用(同构)渲染服务器。 您可以使用其默认值并...

    asp.net知识库

    通过反射调用類的方法,屬性,字段,索引器(2種方法) ASP.NET: State Server Gems 完整的动态加载/卸载程序集的解决方案 从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件...

    亮剑.NET深入体验与实战精要2

    6.3.7 项目案例:通用自定义XML配置类 263 6.4 ADO.NET与XML 266 6.4.1 读XML文档到DataSet 266 6.4.2 DataSet转为XML文档 267 6.5 项目案例1:实现网站的RSS应用 267 6.6 项目案例2:在线实现RSS阅读器 270 本章...

Global site tag (gtag.js) - Google Analytics