JavaScript中创建对象和继承示例解读

 更新时间:2014年02月12日 15:26:12   作者:  
这篇文章主要介绍了JavaScript中怎样创建对象和继承,需要的朋友可以参考下
对象创建:

当一个函数对象被创建时候,Function构造器产生的函数对象会运行类似这样的代码:
复制代码 代码如下:

this.prototype={constructor:this};

假设函数F
F用new方式构造对象时,对象的constructor被设置成这个F.prototype.constructor
如果函数在创建对象前修改了函数的prototype,会影响创建出来对象的construtor属性

如:
复制代码 代码如下:

function F(){};
F.prototype={constructor:'1111'};
var o=new F();//o.constructor===‘1111' true

继承原理:

JavaScript中的继承是使用原型链的机制,每个函数的实例都共享构造函数prototype属性中定义的数据,要使一个类继承另一个,需要把父函数实例赋值到子函数的prototype属性。并且在每次new实例对象时,对象的私有属性__proto__会被自动连接到构造函数的prototype。

instanceof就是查找实例对象的私有prototype属性链来确定是否是指定对象的实例

具体实例:
复制代码 代码如下:

//instanceof实现
function Myinstanceof(obj,type)
{
var proto=obj.__proto__;
while(proto)
{
if(proto ===type.prototype)break;
proto=proto.__proto__;
}
return proto!=null;
}


function View(){}
function TreeView(){}
TreeView.prototype=new View();//TreeView.prototype.__proto__=TreeView.prototype 自动完成
TreeView.prototype.constructor=TreeView;//修正constructor
var view=new TreeView();//view.__proto__=TreeView.prototype 自动完成
alert(view instanceof View); //true 查找到view.__proto__.__proto__时找到
alert(view instanceof TreeView); //true 查找到view.__proto__时找到
alert(Myinstanceof(view,View)); //true
alert(Myinstanceof(view,TreeView)); //true

相关文章

  • 微信小程序点击滚动到指定位置的实现

    微信小程序点击滚动到指定位置的实现

    这篇文章主要介绍了微信小程序点击滚动到指定位置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 自己写的Javascript计算时间差函数

    自己写的Javascript计算时间差函数

    Javascript计算时间差函数,获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒。
    2013-10-10
  • JavaScript将数据转换成整数的方法

    JavaScript将数据转换成整数的方法

    这篇文章主要介绍了JavaScript将数据转换成整数的方法,有需要的朋友可以参考一下
    2014-01-01
  • 无缝滚动的简单实现代码(推荐)

    无缝滚动的简单实现代码(推荐)

    下面小编就为大家带来一篇无缝滚动的简单实现代码(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • uniapp动态修改元素节点样式详解

    uniapp动态修改元素节点样式详解

    这篇文章主要介绍了uni-app动如何态修改元素节点样式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 详解Javascript实践中的命令模式

    详解Javascript实践中的命令模式

    这篇文章主要介绍了Javascript实践中的命令模式,对命令模式感兴趣的同学,可以参考下
    2021-05-05
  • echarts报错:Error in mounted hook的解决方法

    echarts报错:Error in mounted hook的解决方法

    最近又遇到了写echarts的时候常遇到的一个错误,这篇文章主要给大家介绍了关于echarts报错:Error in mounted hook: “TypeError: Cannot read properties of undefined (reading ‘init‘)“的解决方法,需要的朋友可以参考下
    2022-07-07
  • JS中多种方式创建对象详解

    JS中多种方式创建对象详解

    下面小编就为大家带来一篇JS中多种方式创建对象详解。小编觉得挺不错的。现在分享给大家,给大家一个参考。一起跟随小编过来看看吧
    2016-03-03
  • js或css实现滚动广告的几种方案

    js或css实现滚动广告的几种方案

    今天无事逛网,突然发现了一个很有趣的事情,(也许只有我觉得有趣).我看到一图片竟然在我拖动滚动条的时候没有动,也许你会说我少见多怪,不信你去找个这样的我看看,很少有的,一般的都是一拖动图片就在那跳得厉害。
    2010-01-01
  • js实现WebSocket 连接的示例代码

    js实现WebSocket 连接的示例代码

    本文主要介绍了js实现WebSocket 连接的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05

最新评论