JavaScript继承定义与用法实践分析


Posted in Javascript onMay 28, 2018

本文实例讲述了JavaScript继承定义与用法。分享给大家供大家参考,具体如下:

javascript 继承 , 老生长谈的东西, 大家应该都很熟悉了, 平时工作基本不会直接使用, 这段时间不忙, 所以补习了下相关基础知识 ,自己动手实践, 加深理解:

基类定义如下:

// base class
function Animal(t)
{
   if(typeof t==='string')
    this.type=t;
   else
   {
    if(t)
      this.type=t.toString();
    else
      this.type='Animal'
   }
   this.speak=function(str)
   {
    if(str)
      console.log(this.type+' said '+str);
    else
      throw "please specify what you want to say!";
   }
}

1. 原型继承 (javascript 类库本身基于原型继承)

String, Number , Boolean 这三大原始类型 我们可以很直接的通过prototype 检查到他们继承自Object.

Date, RegExp ,Array 这三应该是间接继承了Object, 他们的prototype属性很特殊 :

Date.prototype =Invalid Date
RegExp.prototype=/(?:)/
Array.prototype=[]

原型继承代码如下: (可以看到Mokey 原型链上的Animal和Object)

// Monkey : Animal 
function Monkey(name,age)
{
   this.name=name;
   this.age=age;
}
Monkey.prototype=new Animal('Monkey');
// Example 01
var m=new Monkey('codeMonkey',10);
    /*
    Monkey:
    age: 10
    name: "codeMonkey"
      __proto__: Animal
      speak: function (str)
      type: "Monkey"
        __proto__: Animal
        constructor: function Animal(t)
          __proto__: Object 
*/
console.log(m.type); // Monkey
console.log(m.name); // codeMonkey
console.log(m.age); // 10
m.speak('hello world') // Monkey said hello world

2. 调用父类构造函数 ( 通过传递子类的this指针 , 将原本是父类的公开成员直接添加到了子类中,从子类原型链中无法看出继承关系)

// Human:Animal 
function Human(id,name)
{
    // call base class's constuctor function
   Animal.call(this,'Human');
   this.id=id;
   this.name=name;
}
var h=new Human(1,'leon');
/*
id: 1
name: "leon"
speak: function (str)
type: "Human"
    __proto__: Human
    constructor: function Human(id,name)
      __proto__: Object
*/
h.speak('hello world'); // Human said hello world 
console.log(h.type); // Human

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
Jul 06 Javascript
跟我学习javascript的undefined与null
Nov 17 Javascript
详解jQuery停止动画——stop()方法的使用
Dec 14 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
JavaScript日期选择功能示例
Jan 16 Javascript
js保留两位小数方法总结
Jan 31 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
Node.js Buffer模块功能及常用方法实例分析
Jan 05 Javascript
微信小程序点击view动态添加样式过程解析
Jan 21 Javascript
Element Popover 弹出框的使用示例
Jul 26 Javascript
关于jquery中attr()和prop()方法的区别
May 28 #jQuery
JS数组去重常用方法实例小结【4种方法】
May 28 #Javascript
jQuery中将json数据显示到页面表格的方法
May 27 #jQuery
javascript少儿编程关于返回值的函数内容
May 27 #Javascript
《javascript少儿编程》location术语总结
May 27 #Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
May 27 #Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
May 27 #Javascript
You might like
967 个函式
2006/10/09 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
微信小程序入门教程
2016/11/18 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
在Python的循环体中使用else语句的方法
2015/03/30 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
详解python itertools功能
2020/02/07 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
毕业生找工作推荐信
2013/11/21 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
岗位明星事迹材料
2014/05/18 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
创业计划书之美容店
2019/09/16 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
如何Tomcat中使用ipv6地址
2022/05/06 Servers
nginx静态资源的服务器配置方法
2022/07/07 Servers