javascript --- 多重继承
多重继承就是指,一个子对象中有不止一个父对象的继承模式。
想要实现她,还是非常简单的,而我们只需要延续属性拷贝的继承思路依次扩展对象即可,而对参数中所继承的对象没有限制。
function multi(){ var n = {}, stuff, j = 0; len = arguments.length; for(var j; j<len;j++){ stuff = argument[j]; for(var i in stuff){ if(stuff hasOwnPrototype(i)){ n[i] = stuff[i] } } } return n; }
我们在其中来了个双重循环,内层循环用于属性拷贝,外层循环用来遍历函数中所传递进来的新对象。
现在来测试一下:
var shape = { name: 'shape', toString: function(){ return this.name } }; var twoDee = { name: 'Dee', dimension: 2 } var triangle = multi(shape, twoDee, { name: 'Anna', getArea: function(){ return this.side*this.height / 2; }, side: 5, height: 5 })
来试一下:
triangle.getArea(); // 17.5 triangle.dimension; triangle.toString); // Anna
要注意的是,mulit()中的循环是按照对象的顺序来进遍历的,也就是说,如果有两个同名的属性或方法,前一个就会被后一个所覆盖。
怎么样,比较简单吧!!!
继续A哥镇楼:
javascript --- 多重继承的更多相关文章
- javascript多重继承
function employee(name, job, born) { this.name = name; this.job = job; this.born = born;} function h ...
- 一种javascript链式多重继承的方式(__proto__原型链)
var a=function(){this.foo='bar';} a.prototype={b:1}; var aa=function(){} aa.prototype={c:2,__proto__ ...
- 多重继承 -Javascript中的apply与call详解
举例 //定义一个函数 function add(x, y) { return x + y; } //用call 来调用 function myAddCall(x, y) { //调用 add 方法 ...
- Javascript中call和apply的区别和用法
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别.其实就是更改对象的内部指针,即改变对象的this指向的内容.这在面向对象的js编程过程中有时是很有用的.call ...
- 玩转JavaScript OOP[4]——实现继承的12种套路
概述 在之前的文章中,我们借助构造函数实现了"类",然后结合原型对象实现了"继承",并了解了JavaScript中原型链的概念. 理解这些内容,有助于我们更深入 ...
- ES6新特性:使用新方法定义javascript的Class
ES6中定义类的方式, 就是ES3和ES5中定义类的语法糖,虽然也有些区别,但是整体定义类的方式更加简洁,类的继承更加方便, 如果想对ES6中的继承更加熟悉, 最好了解ES5中原型继承的方式, 博客园 ...
- Javascript中的apply与call详解
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 一.方法定义 1.call 方法 语法:call([thisObj[,arg1[, arg2[, [,.arg ...
- javascript 中继承实现方式归纳
转载自:http://sentsin.com/web/1109.html 不同于基于类的编程语言,如 C++ 和 Java,javascript 中的继承方式是基于原型的.同时由于 javascrip ...
- JavaScript instanceof 运算符深入剖析
简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...
随机推荐
- Codeforces Round #505 D. Recovering BST(区间DP)
首先膜一发网上的题解.大佬们tql. 给你n个单调递增的数字,问是否能够把这些数字重新构成一棵二叉搜索树(BST),且所有的父亲结点和叶子结点之间的gcd > 1? 这个题场上是想暴力试试的.结 ...
- debian右键添加在终端中打开
sudo apt-get install nautilus-open-terminal -y 注销,重启
- LA 3667 Ruler 搜索
题意: 给出\(n\)个长度,要设计一个有\(m\)个刻度的刻度尺,刻度尺的刻度从\(0\)开始. 使得任意一个长度都能被该刻度尺度量出来. 首先要使\(m\)最小,在\(m\)最小的前提下尺子的长度 ...
- Django Form two
Django_Form: 1.class TeacherNewForm(Form): username = fields.CharField( required=True, error_message ...
- python - 读取配置文件
# -*- coding:utf-8 -*- ''' @project: jiaxy @author: Jimmy @file: read_config.py @ide: PyCharm Commun ...
- day01_03.人人都会编程
PHP if语句打招呼编程 <?php$gender = "man"; if($gender == "man"){ echo "you are ...
- 元类相关(type & metaclass)
metaclass作用: 1) 拦截类的创建 2) 修改类 3) 返回修改之后的类 """为什么要用metaclass类而不是函数? 由于__metaclass__可以接 ...
- zabbix2.4升级到2.5 --考虑升级到zabbix3.0
现在zabbix服务器,zabbix服务日志频繁出现MySQL server has gone away,经搜索,此问题在zabbix2.5之前是zabbix的一个bug,zabbix2.5后已经修 ...
- 【HDU4372】Count the Buildings (第一类斯特林数)
Description $N$座高楼,高度均不同且为$1~N$中的数,从前向后看能看到$F$个,从后向前看能看到$B$个,问有多少种可能的排列数. $T$组询问,答案模$1000000007$.其中$ ...
- SPOJ QTREE4 - Query on a tree IV
You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3. ...