js继承的常用方式

  写在前面的话:这篇博客不适合对面向对象一无所知的人,如果你连_proto_、prototype...都不是很了解的话,建议还是先去了解一下JavaScript面向对象的基础知识,毕竟胖子不是一口吃成的。

  我们都知道面向对象语言的三大特征:继承、封装、多态,但JavaScript不是真正的面向对象,它只是基于面向对象,所以会有自己独特的地方。这里就说说JavaScript的继承是如何实现的。

  学习过Java和c++的都知道,它们的继承通过类实现,但JavaScript没有类这个概念,那它通过什么机制实现继承呢? 答案是: 原型链!
  这篇博客主要是关于《高程3》—— 6.3 继承 的总结,建议先阅读阮一峰大神的js继承三部曲,然后再回头看体会更深:

  JavaScript面向对象编程(一):封装 - http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html

  JavaScript面向对象编程(二):构造函数的继承 - http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html

  JavaScript面向对象编程(二):非构造函数的继承 - http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance_continued.html

  下面这个是关于Function和Object创建实例之间的关系,看懂的话对理解继承有很大帮助:

实现继承之前,先看一个基于原型链继承的链图,对继承有个具体化的概念:  (这个是核心继承部分)

下面是整体的继承链:

-------------------------------有了上面的思路,下面用代码去实现6种不同形式的继承-----------------------------------------

时间: 2024-08-05 02:53:15

js继承的常用方式的相关文章

JS继承的实现方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function(){ console.log(this.name + '正在睡觉!'); } } // 原型方法 Animal

JS对象创建常用方式及原理分析

====此文章是稍早前写的,本次属于文章迁移@2017.06.27==== 前言 俗话说"在js语言中,一切都对象",而且创建对象的方式也有很多种,所以今天我们做一下梳理 最简单的方式 JavaScript创建对象最简单的方式是:对象字面量形式或使用Object构造函数 对象字面量形式 1 var person = new Object(); 2 person.name = "jack"; 3 person.sayName = function () { 4 ale

JS继承几种方式

1.原型继承<script> function Person(name,age){ this.name = name; this.age = age; } Person.prototype.sayHello = function(){ alert("使用原型得到Name:"+this.name); } var per = new Person("dzk",21); per.sayHello();//输出:使用原型得到Name:dzk function S

JS继承的一些见解

JS继承的一些见解 js在es6之前的继承是五花八门的.而且要在项目中灵活运用面向对象写法也是有点别扭,更多的时候还是觉得面向过程的写法更为简单,效率也高.久而久之对js的继承每隔一段时间就会理解出现困难.所以这次我要把对对象的理解写下来,这样应该就深刻一点了. 我们先来看看一个对象是怎么生成的 // 三种创建对象的方法 var obj = {} var obj2 = new Object() var obj3 = Object.create(null) // 创建一个空字符串对象 var ob

JS继承以及继承的几种实现方式总结

传统面向对象语言:继承是类与类之间的关系. 而在js中由于es6之前没有类的概念,所以继承是对象与对象之间的关系. 在js中,继承就是指使一个对象有权去访问另一个对象的能力. 比如:比如对象a能够访问对象b的成员(属性和方法),那么就说对象a继承于对象b: 继承的实现方式有很多,常用的有:1.原型继承.2.类式继承.3.组合继承.4.extend方法 1.原型继承: 这里在说原型继承之前我们先来谈谈js中什么是原型,以及提到原型不得不要先来说说的js对象的创建方式. 问题一:对象的创建方式 //

js继承有5种实现方式

js继承有5种实现方式:1.继承第一种方式:对象冒充  function Parent(username){    this.username = username;    this.hello = function(){      alert(this.username);    }  }  function Child(username,password){    //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承    //第一步:this.method是作为一

js 继承方式

js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现方式可以实现多继承)实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值 function Parent(firstname)   {       this.fname=firstname;       this.age=40;       thi

JS 继承的方式

JS 继承的方式 1.使用call的方式 2. code如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="text/javascript"> //继承的第二种实

JS继承的6种方式

JS继承:1.原型链继承 Person.prototype = new Animal();将父类的实例作为子类的原型.(1)不能向构造函数传参,无法实现多继承(2)来自原型对象的引用属性是所有实例共享的 2.构造继承实际上使用父类的构造函数来增强子类,等于是把父类的构造函数复制给子类.function Person(name) { Animal.call(this); this.name = name;}优点:(1)可以向构造函数传参数(2)可以实现多继承,多call几个缺点:(1)无法实现函数