一种javascript链式多重继承的方式(__proto__原型链)

var a=function(){this.foo=‘bar‘;}
a.prototype={b:1};
var aa=function(){}
aa.prototype={c:2,__proto__:a.prototype};
var aaa=function(){}
aaa.prototype={c:3,d:4,__proto__:aa.prototype};

console.log(new a());
console.log(new aa());
console.log(new aaa());

可以发现,new aaa()产生的对象继承了aa类和a类的所有属性。

由于IE的__proto__不可控制,所以仅火狐和chrome支持。

时间: 2024-10-10 10:52:27

一种javascript链式多重继承的方式(__proto__原型链)的相关文章

另外一种设置沉浸式标题栏的方式

今天又看到了另外一种设置沉浸式标题栏的方式,比上次写的那个使用主题,设置主题背景色的要好很多了.尤其是设置主题背景色后,程序从后台到前台ui界面没加载出来会显示出短暂的标题栏的颜色,因此设置主题背景颜色的方式还是有些缺陷. 废话不多说,我介绍的这个方法使用了小米的一个类:SystemBarTintManager 小米官网的地址 http://dev.xiaomi.com/doc/p=4769/index.html 经过测试在其他的手机上一样适用,只是那个设置标题栏字体颜色为黑色不能用而已. 1

javascript 的 继承(一) 之 原型链继承

继承 继承是 OO语言中的一个最为人津津乐道的概念.许多 OO语言都支持两种继承方式:接口继承和实现继承. 接口继承只继承方法签名,而实现继承则继承实际的方法. 如前所述,由于函数没有签名,在 ECMAScript中无法实现接口继承.ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的. 1.原型链 ECMAScript中描述了原型链的概念,并将原型链作为实现继承的主要方法. 其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 简单回顾一下构造函数.原型和实

JavaScript难点系列(六):原型链与继承

类和构造函数 JS中使用构造函数来定义类: function Range(from, to) { this.from = from this.to = to } Range.prototype.includes = function(x) { return this,from <= x && x <= this.to } Range.prototype.toString = function() { return this.from + '...' + this.to } va

javascript基础修炼(1)——一道十面埋伏的原型链面试题

在基础面前,一切技巧都是浮云. 题目是这样的 要求写出控制台的输出. function Parent() { this.a = 1; this.b = [1, 2, this.a]; this.c = { demo: 5 }; this.show = function () { console.log(this.a , this.b , this.c.demo ); } } function Child() { this.a = 2; this.change = function () { th

玩转JavaScript OOP[3]&mdash;&mdash;彻底理解继承和原型链

概述 首先,我们简单描述一下继承的概念:当一个类和另一个类构成"is a kind of"关系时,这两个类就构成了继承关系.继承关系的双方分别是子类和基类,子类可以重用基类中的属性和方法. 上一篇我们介绍了通过构造函数和原型可以实现JavaScript中的"类",由于构造函数和原型是对象,所以JavaScript的"类"本质上也是对象.这一篇我们将介绍JavaScript中的一个重要概念原型链,以及如何经原型链实现JavaScript中的继承.

标识符解析、作用域链、运行期上下文、原型链、闭包

本文讲到的是如何从数据访问层面上提高JS 代码的执行效率.总的来讲有以下几条原则: 函数中读写局部变量总是最快的,而全局变量的读取则是最慢的: 尽可能地少用with 语句,因为它会增加with 语句以外的数据的访问代价: 闭包尽管强大,但不可滥用,否则会影响到执行速度以及内存: 嵌套的对象成员会明显影响性能,尽量少用: 避免多次访问对象成员或函数中的全局变量,尽量将它们赋值给局部变量以缓存. 这么几句话看似简单,但要深刻理解其中的道理则需涉及到JS的 标识符解析.作用域链.运行期上下文(又称为执

JavaScript面向对象编程(6)利用原型链实现继承

继承是面向对象的特性之一,继承的主要目的就是为了重用.子类能复用父类的属性或者行为,可以极大地简化子类,避免重复定义. 继承的特征1.子对象拥有父对象的属性和方法 继承特征2:子对象"是一个"父对象,具备"is-a"的特点, 如人是动物,那么人就是动物的子类,体现在对象上,一个人必然有一个指向动物实例的引用 子类的prototype指向父类的一个实例,就完成了继承,因为子类的实例上具备了父类实例的属性和行为. Java中子类实例有super关键字指向父类实例,在继承

如何理解JavaScript的原型和原型链

在现在的业务开发中,应该很少人在写原生JavaScript了,大家都一股脑地扑在各个框架上.本来,这些框架对于业务和开发者来说是一种福音,减少了各种各样的开发痛点,但是带来的负面问题就是对于开发者来说,越来越依赖框架,离原生JavaScript越来越远,对基础知识的记忆和理解慢慢地模糊.淡忘. 而原型.原型链就是其中之一.每一个构造函数都有一个与之相关联的对象,该对象称之为原型对象.每个实例对象都能共享其原型对象上的属性和方法.原型对象的作用主要用来实现属性的继承,让实例对象能共享原型对象的属性

十分钟读懂JavaScript原型和原型链

原型(prototype)这个词来自拉丁文的词proto,意谓"最初的",意义是形式或模型.在JavaScript中,原型的探索也有很多有趣的地方,接下来跟随我的脚步去看看吧.原型对象释义每一个构造函数都有一个与之相关联的对象,该对象称之为原型对象.每个实例对象都能共享其原型对象上的属性和方法.原型对象的作用主要用来实现属性的继承,让实例对象能共享原型对象的属性,减少内存分配.所以,在上一节中,我们想在每个Person对象中共享同一个say方法,可以这样来实现.function Per