手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript对象创建及继承原理实例解剖
JavaScript对象创建及继承原理实例解剖
摘要:对象创建:当一个函数对象被创建时候,Function构造器产生的函数对象会运行类似这样的代码:复制代码代码如下:this.prototype...

对象创建:

当一个函数对象被创建时候,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

上面自定义的Myinstanceof就是自己实现的一个instanceof功能的函数,由于IE内核实例存储prototype不是__proto__,所以Myinstanceof会无法通过,其他浏览器上应该都没有问题

【JavaScript对象创建及继承原理实例解剖】相关文章:

javascript原型模式用法实例详解

微信浏览器内置JavaScript对象WeixinJSBridge使用实例

JavaScript操作Cookie方法实例分析

Javascript中For In语句用法实例

JavaScript中的条件判断语句使用详解

JavaScript判断数组是否包含指定元素的方法

javascript动态设置样式style实例分析

JavaScript中的异常处理方法介绍

JavaScript获得指定对象大小的方法

JavaScript实现的MD5算法完整实例

精品推荐
分类导航