javascript实现最基本、最简单的继承
时间:2022-04-27
本文章向大家介绍javascript实现最基本、最简单的继承,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
js的OO方面的文章,没有八千,也有一万了,多也不多我这一篇,
更何况还是原创。
要说继承,就得有个“根”,就是你从哪、从谁那继续。
就是说,先得有个被继承的函数,“构造函数”:
function rootObj(n){
this.name = n;
}
然后你可以给它添加方法:
rootObj.prototype.m1 = function(m1){
console.log( m1 )
}
然后可以这么使用:
var obj1 = new rootObj();
obj1.m1('m1m1');
打印出:m1m1
这是继续么?当然不是,那这是什么呢?
这是原型添加自定义方法。
要想用到继承,还得接着往下写,
定义子类 childrenObj,
function childrenObj(n){
rootObj.call(this,n);//调用了根类
}
//使用根类rootObj的实例,做为子类的原型,
//修改子类的原型链了
childrenObj.prototype = new rootObj();
//单独给子类添加方法c1
childrenObj.prototype.c1 = function(){
console.log(c1)
}
//实例化子类,运行看结果
var objc = new childrenObj();
objc.c1('c1'); //输出c1
objc.m1('m1'); //输出m1
会看到子类childrenObj,
即可以调用自身添加的原型方法c1,
也可以调用根类的原型方法m1
而这,就是继承,
javascript的原型继承!
关键的知识点有二个:
(1)、rootObj.call(this,n);
(2)、childrenObj.prototype = new rootObj();
第一个call不多说了,自己百度下有很多资料。
第二个是,是因为JS内部,对象的方法和属性的查找方式,
是通过prototype来实现的。
就是你声明变量后,赋值new了一个函数时,
也会把这个函数的prototype对象一起赋值过去,
这就形成了原型链。
很简单的,自己多练习练习,就秒懂。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 搭建简易的物联网服务端和客户端-第二次增补(十二)
- 使用jest进行单元测试
- 搭建简易的物联网服务端和客户端-数据库功能增加(十三)
- 分享一个关于Cookie做的实验结果
- LeetCode20|从上到下打印二叉树
- 搭建简易的物联网服务端和客户端-微博接口(十四)
- 一键帮你生成所需代码--EasyCode试试这个工具吧
- centos7.2安装MySQL
- LeetCode19|二叉树的深度
- 搭建简易的物联网服务端和客户端-微博发送信息(十五)
- LeetCode23|求1+2+...+n
- LeetCode22|从上到下打印二叉树II
- linux安装nodejs
- LeetCode21|主要元素
- STM32晶振导致的串口乱码问题解决