js 继承介绍
js中继承的方式并不是明确的,这里介绍常用的几种
一、对象冒充(构造函数绑定)
原理:使用对象冒充继承基类,实质上是使用call或apply方法改变this 指针的指向
function Monkey()
{
this.type = "猴子";
}
function MagicMonkey()
{
Monkey.call(this);
this.skill = "法术";
}
这种方式可以实现多重继承的,当然用apply也是一样的
二、原型链
原理:使用prototype属性,prototype对象是个模版,要实例化的对象都以这个模版为基础,总而言之,prototype对象的任何属性和方法都被传递给那个类的所有实例,原型链利用这种功能来实现继承机制。
function Monkey() { }
Money.prototype.type = "猴子";
Money.prototype.run = function () { alert("我是一个猴子")} function MagicMonkey() { }
MagicMonkey.prototype = new Monkey();
var wukong = new MagicMonkey();
alert(wukong.type);//打印出“猴子”
wukong.run();//打印出"我是一个猴子"
注意:给子类加属性或方法时必须在 MagicMonkey.prototype = new Monkey(); 之后,要不会被覆盖,只能继承一个父类
三、混合模式
function Monkey(type) {
Money.type = type;
}
Money.prototype.run = function () { alert("我是一个猴子")} function MagicMonkey(type) {
Money.call(this,type);//只能继承构造函数中的信息,不能继承原型中的信息
}
MagicMonkey.prototype = new Monkey(); var wukong = new MagicMonkey();
alert(wukong.type);//打印出“猴子”
wukong.run();//打印出"我是一个猴子"
js 继承介绍的更多相关文章
- js继承之借用构造函数继承
我的上一篇文章介绍了,原型链继承模式.但是单纯的原型链模式并不能很好地实现继承. 一.原型链的缺点 1.1 单纯的原型链继承最大的一个缺点,来自于原型中包含引用类型的值. 本来,我们没有通过原型链实现 ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)
一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了, ...
- JS继承的一些见解
JS继承的一些见解 js在es6之前的继承是五花八门的.而且要在项目中灵活运用面向对象写法也是有点别扭,更多的时候还是觉得面向过程的写法更为简单,效率也高.久而久之对js的继承每隔一段时间就会理解出现 ...
- JS继承(简单理解版)
童鞋们,我们今天聊聊js的继承,关于继承,平时开发基本用不到,但是面试没有不考的,我就想问,这是人干的事吗? 好吧,迫于社会主义核心价值观,我们今天就来简单说一说js的继承,谁让它是面向对象编程很重要 ...
- doT.js详细介绍
doT.js详细介绍 doT.js特点是快,小,无依赖其他插件. 官网:http://olado.github.iodoT.js详细使用介绍 使用方法:{{= }} for interpolati ...
- js继承
js继承有5种实现方式: 继承第一种方式:对象冒充 function Parent(username){ this.username = username; this.hello = function ...
- Web3D编程入门总结——WebGL与Three.js基础介绍
/*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...
- js继承之call,apply和prototype随谈
在js中,call,apply和prototype都可以实现对象的继承,下面我们看一个例子: function FatherObj1() { this.sayhello = "I am jo ...
- js继承精益求精之寄生式组合继承
一.混合/组合继承的不足 上一篇JS继承终于混合继承,认真思考一下,发现其还是有不足之处的: 空间上的冗余:在使用原型链的方法继承父类的原型属性(Animal.prototype)的同时,也在子类的原 ...
随机推荐
- Npoi--合并单元格
一.缘由. 最近公司的一个需求,导出 Excel, 相同的数据进行合并,并且 还有 二级合并. 最终效果图如下: 哈哈哈哈哈,图表略微有些丑陋,请大家不要介意. 他的原始数据,是一条一条的, 如下图: ...
- textarea 高度自动
<textarea id="suggest" type="text" name="suggest" class="form- ...
- ceph 存储池PG查看和PG存放OSD位置
1. 查看PG (ceph-mon)[root@controller /]# ceph pg stat 512 pgs: 512 active+clean; 0 bytes data, 1936 MB ...
- Cannot modify header information问题的解决方法【新浪云经常遇到的错误】
我做了一个统一的出错提示函数,在函数执行里面,先处理出错的地址写入cookie以方便用户登陆以后可以直接跳转到要执行的这个页面,可是发现在服务器上测试时,竟然提示本地没有出现的错误: Warning: ...
- JAVA常见面试题之Forward和Redirect的区别 (转发和重定向)
阅读目录 一:间接请求转发(Redirect) 二:直接请求转发(Forward) 用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相 ...
- 两个for循环效率,哪个高
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数.
- 【flask macro】No caller defined
https://segmentfault.com/q/1010000005352059/a-1020000005352912 先码着 有时间了再换成caller() 先用老方法吧...
- 查看inux系统类型和版本
当我们使用一台新的linux服务器的时候,为了区分他们的命令,我们首先第一步就是要搞清楚这个系统的类型和版本号,据此再来使用对应的命令. 下面来看看可以使用以下基本命令来查看 Linux 发行版名称和 ...
- Python之机器学习K-means算法实现
一.前言: 今天在宿舍弄了一个下午的代码,总算还好,把这个东西算是熟悉了,还不算是力竭,只算是知道了怎么回事.今天就给大家分享一下我的代码.代码可以运行,运行的Python环境是Python3.6以上 ...
- mongodb 两台互为主从
主机A [root@mysql_master zhxf]# cat docker-compose.yml version: '3' services: mongo_rs1: image: mongo: ...