JavaScript 类/函数继承最佳实践

标签: Web JavaScript JavaScript继承 | 发表时间:2013-06-04 11:05 | 作者:ideawu
出处:http://www.ideawu.net/blog

JavaScript 没有像 Java 等面向对象语言的 class 关键字用法, 和 class 最像的就是 function 了. 下面的代码相当于在 JavaScript 中定义了一个类:

function Base(arg){
    var self = this;
    self.base = 1;
    self.name = 'base';
}

如果想新定义一个类 Child 继承 Base, 怎么办? JavaScript 又没有 extends. 这时, 就要利用到 prototype 了.

function Child(arg){
    var self = this;
    self.name = 'child';
}

// 继承在这里发生了!
Child.prototype = new Base();
Child.prototype.constructor = Child;

这时, 使用 Child 类就没有什么特殊的了:

var child = new Child();
alert(child.base + ', ' + child.name); // 1, child

你还可以封装一下:

function class_extends(child, base){
    child.prototype = new base();
    child.prototype.constructor = child;
}

Related posts:

  1. JavaScript+CSS实现数据表格条纹
  2. JavaScript+jQuery两栏选择控件
  3. JavaScript 设置浏览器标题闪动
  4. jQuery延时绑定事件(lazy-bind)
  5. JavaScript 多线程

相关 [javascript 函数 继承] 推荐:

JavaScript 类/函数继承最佳实践

- - idea's blog
JavaScript 没有像 Java 等面向对象语言的 class 关键字用法, 和 class 最像的就是 function 了. 下面的代码相当于在 JavaScript 中定义了一个类:. 如果想新定义一个类 Child 继承 Base, 怎么办. JavaScript 又没有 extends.

JavaScript 函数、作用域和继承

- - 幸福收藏夹
关于函数、作用域和继承,可以写的非常多. 不过和 JavaScript 类型浅解 一样,是写给初学者看的,我们着重从简单的来. 当然,即使用「简单」来描述,这也是 JavaScript 中最不容易懂的点之一. 如你所见, function fn(){},像这个声明式函数. 虽然初学看起来有点乱,不过我想说的是,你总会知道如何用的,现在知道就可以了.

javascript继承的写法

- LiuWeifeng - 断桥残雪部落格
严格来说javascript是基于对象而不是面向对象的语言,因为javascript没有像java语言那么丰富的类、继承、封装,但是javascript是基于原型(prototype)的面向对象开发,是一种动态、弱类型、基于原型的语言. 前几天看了阿里UED的《重温javascript继承机制》,今天重新看了,很有感触,特地转载了重要的部分,记录一下,下次有需要的时候还要重新看一下.

JavaScript继承方式详解

- - SegmentFault 最新的文章
js里常用的如下两种继承方式:. 原型链继承(对象间的继承) 类式继承(构造函数间的继承). 由于 js不像 java那样是真正面向对象的语言, js是基于对象的,它没有类的概念. 所以,要想实现继承,可以用 js的原型 prototype机制或者用 apply和 call方法去实现.

Javascript继承机制的设计思想

- David - 阮一峰的网络日志
我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instance)的区分,全靠一种很奇特的"原型链"(prototype chain)模式,来实现继承. 我花了很多时间,学习这个部分,还做了很多笔记. 但是都属于强行记忆,无法从根本上理解.

JavaScript中的原型和继承

- - 博客园_知识库
   英文原文: Prototypes and Inheritance in JavaScript.   请在此暂时忘记之前学到的面向对象的一切知识.   最近我正在观看  24 Hours of Le Mans ,这是法国流行的一项赛事. 最快的车被称为 Le Mans 原型车. 这些车虽然是由“奥迪”或“标致”这些厂商制造的,可它们并不是你在街上或速公路上所见到的那类汽车.

javascript封装drag()拖拽函数

- - 收集分享互联网资源!
拖拽效果虽然项目中很少使用,但不可否认其是一个很经典的效果(google产品使用的挺多的),下面整理了拖拽效果的代码框架. 里面解决兼容性的代码需要重点理解下:. 1、通过setCapture()与releaseCapture()解决IE浏览器下拖拽图片的bug,即图片拖拽过程中不跟随鼠标移动直接到达鼠标目标点;.

javascript 回调函数实现使用

- - Web前端 - ITeye博客
在模拟代码中,我们再增加一种回调方式:.     var context="全局";.         context:"初始",.         callback:function (str){//回调函数.             alert("callback:我所处的上下文中,context="+this.context+",我被回调的方式:"+str);.

JavaScript的5种调用函数的方法

- - IT技术博客大学习
一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性, 当我们选择面对它的时候,这将成为我们前进的阻碍.. 作为初学者,我们来测试五种函数调用的方法,从表面来看我们会认为那些函数与C#中函数的作用非常相似,但是我们一会儿可以看到还是有非常重要的不同的地方的,忽视这些差异无疑会导致难于跟踪的bug.

JavaScript中常见的数组操作函数及用法 - front-Thinking

- - 博客园_首页
JavaScript中常见的数组操作函数及用法.   昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法. 今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下,这样方便大家准备参考. 如果恰好你也在准备各种笔试,希望对你有所帮助.   创建数组应该是最简单的了,有用数组字面量创建和数组构造函数两种方法,见下:.