JavaScript 的几种继承方式

JavaScript 的几种继承方式

  • 原型链继承
  • 构造函数继承
  • 组合继承 (伪经典继承)
  • 原型式继承
  • 寄生式继承
  • 寄生组合式继承
  • ES6 extends 继承

1, 原型链继承

原理是将父对象的属性和方法通过prototype进行引用

function people() {
    this.flag = true;
    this.func = function() {
        console.log("this is people func");
    }
}
function boy() {
    this.sex = "boy";
}
boy.prototype = new people();
var peo1 = new boy();
console.log( peo1.flag );     // true
console.log( peo1.func() );   // this is people func
console.log( peo1.sex );      // boy

缺点:

  • 实例对象的属性被共享
  • 无法向父类的方法传递参数

2, 构造函数继承

构造函数继承主要在继承对象中使用 call()、apply() 完成。

function people(name) {
    this.name = name || "xiaoming";
}

// 对people进行继承
function boy() {
    people.call(this, "wangming");
    this.age = 18;
}
var peo1 = new boy();
console.log( peo1.name ); //wangming
console.log( peo1.age ); //18

缺点:

  • 函数无法复用
  • 父类的方法对子类不可见

3, 组合继承 (伪经典继承)

夜已深,明日待续...

原文地址:https://www.cnblogs.com/miku561/p/10487017.html

时间: 2024-10-19 18:57:02

JavaScript 的几种继承方式的相关文章

[总结] js的2种继承方式详解

这篇文章主要介绍了javascript的2种继承方式,分析对象冒充和原型链方式的不同,需要的朋友可以参考下. js中继承可以分为两种:对象冒充和原型链方式. 一.对象冒充包括三种:临时属性方式.call()及apply()方式1.临时属性方式 function Person(name){ this.name = name; this.say = function(){ alert('My name is '+this.name); } } function F2E(name,id){ this.

JavaScript常用的几种继承方式

JavaScript是面向对象的弱类型语言,继承是其重要的特性之一,这里总结下常用的四种继承方法. 先定义一个父级构造函数,并在其原型上添加一个speak方法 //定义父级构造函数 function Person(name, age) { this.name = name; this.age = age; this.intro = function() { console.log(this.name + ' is ' + this.age + ' years old'); } } //父级原型添

js的6种继承方式

重新理解js的6种继承方式 注:本文引用于http://www.cnblogs.com/ayqy/p/4471638.html 重点看第三点 组合继承(最常用) 写在前面 一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触. 偏见归偏见,既然面试官问到了JS的OOP,那么说明这东西肯定是有用的,应该抛开偏见,认真地了解一下 约定 P.S.下面将展开一个有点长的故事,所以有必要提前约定共同语言: 1 2 3 4 5

重新理解JS的6种继承方式(转)

http://www.ayqy.net/ 写在前面 一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触. 偏见归偏见,既然面试官问到了JS的OOP,那么说明这东西肯定是有用的,应该抛开偏见,认真地了解一下 约定 P.S.下面将展开一个有点长的故事,所以有必要提前约定共同语言: /* * 约定 */ function Fun(){ // 私有属性 var val = 1; // 私有基本属性 var arr = [

js几种继承方式(六种)

JS实现继承的几种方式前言:大多数语言都支持两种继承方式: 接口继承和实现继承 ,而javaScript中无法实现接口继承,javaScript只支持实现继承,而且其实现继承主要是依靠原型链来实现.主要继承方式如下:1.原型链继承2.构造函数继承3.实例继承4.拷贝继承5.组合继承(原型链继承+构造函数继承)6.寄生组合式继承 JS继承的实现方式既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类function Animal (name) { // 属性 this.nam

js的5种继承方式——前端面试

js主要有以下几种继承方式:对象冒充,call()方法,apply()方法,原型链继承以及混合方式.下面就每种方法就代码讲解具体的继承是怎么实现的. 1.继承第一种方式:对象冒充 1 function Parent(username){ 2 this.username = username; 3 this.hello = function(){ 4 alert(this.username); 5 } 6 } 7 function Child(username,password){ 8 //通过以

重新理解JS的6种继承方式

写在前面 一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触. 偏见归偏见,既然面试官问到了JS的OOP,那么说明这东西肯定是有用的,应该抛开偏见,认真地了解一下 约定 P.S.下面将展开一个有点长的故事,所以有必要提前约定共同语言: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /*  * 约定  */ function Fun(){     // 私有属性  

类设计中几种继承方式

 通过继承能够从已有的类派生出新的类,而派生类继承了基类的特征,包括方法.正如继承一笔财产要比自己白手起家容易一样,通过继承派生出的类通常比设计新类要容易得多.下面是可以通过继承完成的一些工作. ①可以在已有类的基础上添加功能. ②可以给类添加数据. ③可以修改类方法的行为. C++有三种继承方式:公有继承.保护继承和私有继承. 一.公有继承 公有继承是最常用的方式,它建立一种is-a关系,即派生类对象也是一个基类对象,可以对基类对象执行的任何操作,也可以对派生类对象执行. ①公有继承不建立

C++中的类继承(1) 三种继承方式

继承是使代码可以复用的重要手段,也是面向对象程序设计的核心思想之一.简单的说,继承是指一个对象直接使用另一对象的属性和方法.继承呈现了 面向对象程序设 计的层次结构, 体现了 由简单到复杂的认知过程.C++中的继承关系就好比现实生活中的父子关系,继承一笔财产比白手起家要容易得多,原始类称为基类,继承类称为子类,它们是类似于父亲和儿子的关系,所以也分别叫父类和子类.继承的方式有三种分别为公有继承(public),保护继承(protect),私有继承(private).定义格式如下: 1. 公有继承