真正的面向对象语言必须支持继承机制,即一个类能够重用(继承)另一个类的方法和属性.javascript既然是面向对象语言,那么就能支持这种继承关系。下面就引入继承机制.
要用ECMAScript实现继承机制,着先从基类入手.所有开发者定义的类都可以作为基类。出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击.
因为javascrip中的继承机制并不是明确规定的,而是通过模仿实现的 ,所以你有权决定使用自己最适用的继承方式.
第一种方式: 对象冒充
其原理就是:构造函数使用this关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。因为构造函数只是一个函数,所以可使ClassA的构造函数成为ClassB的方法然后调用它.ClassB就会收到ClassA的构造函数中定义的属性和方法.(从而实现继承的功效)
-
- function ClassA(sColor) {
-
- this.color = sColor;
- this.sayColor = function() {
- alert(this.color);
- };
- }
-
-
- function ClassB(sColor, name) {
- this.newMethod = ClassA;
- this.newMethod(sColor);
-
- delete this.newMethod;
-
-
- this.name = sName;
- this.sayName = function() {
- alert(this.name);
- };
- }
-
-
- var objA = new ClassA("red");
- var objB = new ClassB("blue", "hello");
- objA.sayColor();
- objB.sayColor();
- objB.sayName();
对象冒充方式的继承机制更强的一点就是可以支持多重继承(一个类可以继承多个超类)。实现的方法与继承一个类同样的.
如上例可写成:
- function ClassB(sColor, name) {
-
- this.newMethod = ClassA;
- this.newMethod(sColor);
- delete this.newMethod;
-
-
- this.newMethod = ClassC;
- this.newMethod();
- delete this.newMethod;
- ......
-
- }
分享到:
相关推荐
学完了Javascript类和对象的创建之后,现在总结一下Javascript继承机制的实现。Javascript并不像Java那样对继承机制有严格明确的定义,它的实现方式正如它的变量的使用方式那样也是十分宽松的,你可以设计自己的方法...
JavaScript继承机制的实现,后期会有一些补充。
选定基类后,就可以创建它的子类了。是否使用基类完全由你决定。有时,你可能想创建一个不能直接使用的基类,它只是用于给子类提供通用的函数...和其他功能一样,ECMAScript中实现继承的方式不止一种。这是因为JavaScr
本文实例讲述了javascript继承机制。分享给大家供大家参考。具体分析如下: 初学javascript一般很难理解Javascript语言的继承机制它没有”子类”和”父类”的概念,也没有”类”(class)和”实例”(instance)的...
主要介绍了阿里巴巴技术文章,分享的是一篇关于Javascript实现继承机制的文章,感兴趣的小伙伴们可以参考一下
javascript的继承机制并不是明确规定的,而是通过模仿实现的,意味着继承不是由解释程序处理,开发者有权决定最适合的继承方式.
Javascript语言对继承实现的并不好,需要工程师自己去实现一套完整的继承机制。下面我们由浅入深的系统掌握使用javascript继承的技巧。 1. 直接使用原型链 这是最简粗暴的一种方式,基本没法用于具体的项目中。一个...
笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装机制,主要功能特征包括: 一、 统一了类定义的语法...
主要介绍了JavaScript不使用prototype和new实现继承机制的相关资料,需要的朋友可以参考下
我一直很难理解Javascript语言的继承机制。 它没有”子类”和”父类”的概念,也没有”类”(class)和”实例”(instance)的区分,全靠一种很奇特的”原型链”(prototype chain)模式,来实现继承。 我花了很...
本文着重解析javascript类继承机制,让你从底层了解javascript是怎样实现“继承”这一概念的。
我们知道JavaScript是面向对象的脚本语言,那么既然是面向对象,继承一定是必不可少的了。JavaScript的核心是ECMAScript,JavaScript继承机制的实现其实就是ECMAScript继承机制的实现
然而,继承中所涉及的不仅仅是一个对象,并且 js 也没有继承这一现有的机制,那它如何实现的呢? 原型 在 JavaScript 中,每个构造函数都拥有一个prototype属性,它指向构造函数的原型对象,这个原型对象中有一个 ...