继承:函数没有签名,无法实现接口继承。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)在创建子类型得实例时,不能向父类型的构造函数中传递参数

javascript 之 面向对象【继承】的更多相关文章

  1. javaScript面向对象继承方法经典实现

    转自原文javaScript面向对象继承方法经典实现 JavaScript的出现已经将近20多年了,但是对这个预言的褒贬还是众说纷纭.很多人都说JavaScript不能算是面向对象的变成语言.但是Ja ...

  2. JavaScript面向对象—继承的实现

    JavaScript面向对象-继承的实现 前言 面向对象的三大特性:封装.继承和多态.上一篇我们简单的了解了封装的过程,也就是把对象的属性和方法封装到一个函数中,这一篇讲一下JavaScript中继承 ...

  3. javascript 之 prototype继承机制

    理解Javascript语言的继承机制 javascript没有"子类"和"父类"的概念,也没有"类"(class)和"实例&qu ...

  4. 深入理解:JavaScript原型与继承

    深入理解:JavaScript原型与继承 看过不少书籍,不少文章,对于原型与继承的说明基本上让人不明觉厉,特别是对于习惯了面向对象编程的人来说更难理解,这里我就给大家说说我的理解. 首先JavaScr ...

  5. JavaScript 类式继承与原型继承

    交叉着写Java和Javascript都有2年多了,今天来总结下自己所了解的Javascript类与继承. Javascript本身没有类似Java的面向对象的类与继承术语,但其基于原型对象的思想却可 ...

  6. javascript进阶——面向对象特性

    面向对象的javascript是这门语言被设计出来时就考虑的问题,熟悉OOP编程的概念后,学习不同的语言都会发现不同语言的实现是不同的,javascript的面向对象特性与其他具有面向对象特性的语言的 ...

  7. 面向对象继承实例(a如何继承b)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. javascript中的继承方法

    从Javascript面向对象编程(二):构造函数的继承这里,可以看到详细的说明. 我只是将其中的例子做成html文件,便于调试罢了. 1. 构造函数绑定 <html> <head& ...

  9. JavaScript的原型继承

    JavaScript是一门面向对象的语言.在JavaScript中有一句很经典的话,万物皆对象.既然是面向对象的,那就有面向对象的三大特征:封装.继承.多态.这里讲的是JavaScript的继承,其他 ...

  10. JavaScript “类”定义 继承 闭包 封装

    一.Javascript “类”: 类:在面向对象编程中,类(class)是对象(object)的模板,定义了同一组对象(又称"实例")共有的属性和方法. Javascript是一 ...

随机推荐

  1. HANA SQL备忘录

    1.改变元素列类型 ALTER TABLE <TABLE_NAME> ALTER (<COLUMN_NAME> <COLUMN_TYPE>);

  2. jeecg富文本编辑器增加字体(仿宋)

    jeecg富文本编辑器增加字体(仿宋) 温馨提示:jeecg 提供了 uedit 富文本的实现,如下针对的是 uedit 增加仿宋字体示例. 主要修改三个文件:plug-in\ueditor\uedi ...

  3. 使用charles过滤网络请求

    1.对网络请求进行过滤,只监控向指定目录服务器上发送的请求 有以下方法: (1)在Structure视图或者Sequence视图的Filter 栏中填入需要过滤出来的关键字(适合临时性封包过滤) 或者 ...

  4. paginate()出来的数据怎样循环插入数据?

    paginate()出来的数据怎样循环插入数据? paginate()分页如何转数组操作数据之后再转回对象? thinkphp5 model里面用toarray后怎么分页? 以上类似问题的出现,是因为 ...

  5. Python selenium根据class定位页面元素

    在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写id属性.通常一段html代码如下: <div cl ...

  6. JAVA时间Date工具类

    package com.common.util; import java.text.DateFormat; import java.text.ParseException; import java.t ...

  7. python列表排重:列表排重并计算字符出现的次数

    a=[,,,,,,,,,,,] dictc={} for i in range(len(a)): dictc[a[i]]=a.count(a[i]) for key in dictc: print k ...

  8. UML作业第二次:类图中类的表示

    1.关于类图的学习: 类图显示了系统的静态结构. 类:类图中的主要元素,用矩形表示.矩形的上层表示类名.中层表示属性.下层表示方法. 类之间的关系:关联.依赖.聚集.泛化和实现五种. 2.五种类间关系 ...

  9. 关于.net后台的异步刷新的问题

    我在.net后台做了一个功能.这里我简单话的描述这个功能. 一个下拉框,然后选择其中的不同的下拉信息,下面会有不同的材料表的显示. 其中一个表中如果有必填的字段,那么你切换这个的时候,会导致下拉框不会 ...

  10. 初识STL vector

    写这个主要是当作笔记来写的,配上自己的理解加上一些测试示例; 上代码: #include<iostream>#include<cstring>#include<vecto ...