博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 之 面向对象【继承】
阅读量:4355 次
发布时间:2019-06-07

本文共 1659 字,大约阅读时间需要 5 分钟。

继承:函数没有签名,无法实现接口继承。ECMAScript只支持实现继承

1/原型链

    回顾:构造函数、原型和实例的关系?

        回:每个构造函数都有一个原型对象。原型对象都包含一个指向构造函数的指针。实例都包含一个指向原型对象的内部指针。

案例分享:function FatherType(){     this.F_PanDuan = true;}FatherType.prototype.getFatherValue= function () {     return this.F_PanDuan;}function ChildType(){     this.C_PanDuan = false;}ChildType.prototype = new FatherType();ChildType.prototype.getChildValue = function (){     return this.C_PanDuan;} var instance = new ChildType(); alert(instance.getFatherValue()); //true 案例分析:FType 和CType分别有一个属性和方法,其中CType继承了FType 理解难点在于:每个构造函数都有一个原型对象。原型对象都包含一个指向构造函数的指针。实例都包含一个指向原型对象的内部指针。 扩展分析:原型搜索机制。当读取模式访问一个实例属性时,先在实例中搜索该属性,若没有该属性则搜索实例的原型。         那么这里会有三个步骤:1/搜索实例  2/搜索ChildType.prototype  3/搜索FatherType.prototype

 

2/确定原型与实例的关系

(1)instanceof操作符

    alert(instance  instanceof  Object) //true  (其中Object 还可以是FatherType,ChildType 返回都为true)

(2)isPrototypeOf()

  alert(Object.prototype.isPrototypeOf(instance)) //true  (其中Object 还可以是FatherType,ChildType 返回都为true)

 3/谨慎地定义方法

   接着上面地例子:加一句 //重写父类型中的方法  ChildType.prototype=getFatherValue=function(){ return false};  结果: alert( instance.getFatherValue())  //false

   还需要注意的是:ChildType.prototype指针已经指向了FatherType,那么此时ChildType.prototype 就不能指向其他方法或对象,否则就不是指向FachterType构造函数

4/原型链的问题:

(1)包含引用类型值得原型属性都会被所有实例共享

案例:function F_Type(){   this.colors={
'red','green','blue'}}function C_Type(){}C_Type.prototype=new F_Type();var instancel=new C_Type();instancel.colors.push('black')alert(instancel.colors) //'red','green','blue','black'var instancel2=new C_Type()instancel2.colors.push('black')alert(instancel.colors) //'red','green','blue','black'

(2)在创建子类型得实例时,不能向父类型的构造函数中传递参数

 

转载于:https://www.cnblogs.com/zmztya/p/10156150.html

你可能感兴趣的文章
Pro Git(中文版)
查看>>
解决phpmyadmin-1800秒超时链接失效问题
查看>>
OpenGL第十一节:拉伸和过滤
查看>>
AlertDialog的onCreateDialog与onPrepareDialog用法
查看>>
swift菜鸟入门视频教程-12-21讲
查看>>
PL/SQL 异常处理程序
查看>>
javascript小白学习指南1---0
查看>>
div:给div加滚动栏 div的滚动栏设置
查看>>
java随机函数使用方法Random
查看>>
链表中环的入口结点
查看>>
凤姐讲学英语
查看>>
ActionBar
查看>>
5种方法实现数组去重
查看>>
2~15重点语法
查看>>
flask中的CBV,flash,Flask-Session,WTForms - MoudelForm,DBUtils 数据库连接池
查看>>
最近整理的提供免费代理列表的几个网站
查看>>
探偵ガリレオー転写る2
查看>>
快速排序算法C++实现[评注版]
查看>>
七尖记
查看>>
SAP(最短增广路算法) 最大流模板
查看>>