JS中常见的几种继承方法
1.原型链继承
// 1.原型链继承
/*
缺点:所有属性被共享,而且不能传递参数
*/
function Person(name,age){
this.name = name
this.age = age
}
Person.prototype.sayName = () =>{
console.log(this.name)
}
function Man(name){ }
Man.prototype = new Person()
Man.prototype.name = 'zhangsan'
var zhangsan = new Man('zhangsan')
console.log(zhangsan.name) //zhangsan
2.构造函数继承(经典继承)
// 构造函数继承(经典继承)
/*
优点:可以传递参数
缺点:所有方法都在构造函数内,每次创建对象都会创建对应的方法,大大浪费内存
*/
function Perent(name,age,sex){
this.name = name
this.age = age
this.sex = sex
this.sayName = function(){
console.log(this.name)
}
} function Child(name,age,sex){
Perent.call(this,name,age,sex)
}
let child = new Child('lisi' , 18, '男')
console.log(child) //Child { name: 'lisi', age: 18, sex: '男', sayName: [Function] }
3.组合方式继承(构造函数 + 原型链)
// 3.组合模式(构造函数 + 原型链)
/*
这种方式充分利用了原型链与构造函数各自的优点,是JS中最常用的继承方法 */
function Animal(name,age){
this.name = name
this.age = age
}
Animal.prototype.sayName = function () {
console.log(this.name)
}
function Cat(name,age,color){
Animal.call(this,name,age)
this.color = color
}
Cat.prototype = Animal.prototype //将Cat的原型指向Animal的原型
Cat.prototype.constructor = Cat //将Cat的构造函数指向Cat
let cat = new Cat('xiaobai',3,'white')
console.log(cat) //Cat { name: 'xiaobai', age: 3, color: 'white' }
cat.sayName() //xiaobai
4.es6方法继承
// 4.es6继承方法
class Per {
constructor(name){
this.name = name
}
sayName(){
console.log(this.name)
}
} class Son extends Per{
constructor(name,age){
super(name)
this.age = age
}
}
let son = new Son('zhangsan',18)
console.log(son) //Son { name: 'zhangsan', age: 18 }
son.sayName() //zhangsan
JS中常见的几种继承方法的更多相关文章
- JS中常见的几种报错类型
1.SyntaxError(语法错误) 解析代码时发生的语法错误 var 1a; //Uncaught SyntaxError: Invalid or unexpected token 变量名错误 c ...
- JS 中深拷贝的几种实现方法
JS 中深拷贝的几种实现方法1.使用递归的方式实现深拷贝 //使用递归的方式实现数组.对象的深拷贝 function deepClone1(obj) { //判断拷贝的要进行深拷贝的是数组还是对象,是 ...
- js中this的四种使用方法
0x00:js中this的四种调用模式 1,方法调用模式 2,函数调用模式 3,构造器调用模式 4,apply.call.bind调用模式 0x01:第一种:方法调用模式 (也就是用.调用的)this ...
- Python中class的三种继承方法
class parent(object): def implicit(self): print("Parent implicit()") def override(self): p ...
- JS中常见的几种控制台台报错
Error 控制台报错 EvalError 全局错误RangeError 引用错ReferenceError 参数错误SyntaxError 语法错误TypeError 类型错误URIError 编码 ...
- js oop中的三种继承方法
JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方 ...
- js中常见的问题
js中常见的问题 原文链接 1.js获取select标签选中的值 原生js var obj = document.getElementByIdx_x(”testSelect”); //定位id var ...
- Jquery中each的三种遍历方法
Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(dat ...
- JavaScript:JavaScript中常见获取对象元素的方法
介绍: javascript中常见的3种获取元素的方法,分别是通过元素ID.通过标签名字和通过类名字来获取 操作如下: 1.getElementById DOM提供了一个名为getElementByI ...
随机推荐
- Ubuntu 18.04LTS安装配置Java OpenJDK8
安装OpenJDK8 sudo apt-get install openjdk-8-jdk 配置Java环境变量 sudo vim /etc/profile 在profile末尾添加以下内容: exp ...
- H3C TCP连接的建立
- hdu 1535 Invitation Cards(spfa)
Invitation Cards Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 安装win下的Anaconda ----针对python3.6.4版本
我的python版本是3.6.4, Anaconda下载地址: Anaconda官网:https://repo.anaconda.com/archive/ 清华大学镜像站:https://mirror ...
- 在字符串中查找id值MySQL
PHPmyadmin中sql语句 SELECT * FROM `hz_article_type` WHERE FIND_IN_SET( 5, items_id ) LIMIT 0 , 30 结果: S ...
- Python--day67--内容回顾
- H3C 帧中继与水平分割
- pytorch实现BiLSTM+CRF用于NER(命名实体识别)
pytorch实现BiLSTM+CRF用于NER(命名实体识别)在写这篇博客之前,我看了网上关于pytorch,BiLstm+CRF的实现,都是一个版本(对pytorch教程的翻译), 翻译得一点质量 ...
- P1019 聪聪理扑克
题目描述 聪聪的两个小伙伴灵灵和豪豪喜欢打扑克,什么斗地主.德州.牛牛,他们都玩的有模有样. 但是每次玩好扑克他们都不整理一下,所以整理扑克的任务就交到了聪聪的手上. 已知现在桌面上有 n 张扑克牌, ...
- POJ 3311 Hie with the Pie 兼 Codevs 2800 送外卖(动态规划->TSP问题)
Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possi ...