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 相关文章推荐
JAVASCRIPT下判断IE与FF的比较简单的方式
Oct 17 Javascript
javascript中的作用域scope介绍
Dec 28 Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
有关Promises异步问题详解
Nov 13 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
May 18 Javascript
javascript DOM的详解及实例代码
Mar 06 Javascript
jQuery ajax动态生成table功能示例
Jun 14 jQuery
微信小程序 scroll-view实现锚点滑动的示例
Dec 06 Javascript
微信公众平台获取access_token的方法步骤
Mar 29 Javascript
vue操作动画的记录animate.css实例代码
Apr 26 Javascript
JS中封装axios来管控api的2种方式
Sep 11 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
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
javascript中this关键字详解
2016/12/12 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python二元赋值实用技巧解析
2019/10/25 Python
python根据文本生成词云图代码实例
2019/11/15 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
python import 上级目录的导入
2020/11/03 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
职称自我鉴定
2013/10/15 职场文书
银行职业规划书范文
2013/12/28 职场文书
网站客服岗位职责
2014/04/05 职场文书
主题实践活动总结
2014/05/08 职场文书
债务授权委托书范本
2014/10/17 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
协议书格式模板
2016/03/24 职场文书
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
Java 写一个简单的图书管理系统
2022/04/26 Java/Android