javascript中instanceof和类的细节
2013-11-22 13:16
274 查看
在javascript里,每个function都有一个prototype属性,这个属性的用途是实现继承机制。必如下面定义的function class1:
function class1(){}
class1.prototype = {a:10,b:100};
则class1的每个实例都会从prototype继承a和b这两个属性。
同时,每个对象都会有一个内部的属性_proto_(不同的javascript虚拟机实现用的名字可能不同),这个属性对js开发人员不可见,只在虚拟机内部使用。每当创建一个对象的时候,这个对象的_proto_就会被赋值为这个对象的构造函数的prototype,这样对象的_proto_属性和构造函数的prototype引用相同的对象,并且一旦对象创建完成,_proto_属性就不会改变。
这样通过对象的_proto_属性,以及_proto_所引用的对象的_proto_属性,就构成了一个_proto_链。 当访问一个对象的属性和方法的时候,js虚拟机正是通过这个_proto_链来查找的。
关于instanceof:
假设有一条这样的语句:
o instanceof c;
在上面的语句执行过程中,虚拟机会把c.prototype和o的_proto_链上的节点逐个进行比较,如果找到相等的节点,则返回true,否则返回false。
本文转自:http://www.cnblogs.com/Qinglong/archive/2009/03/11/1408610.html
function class1(){}
class1.prototype = {a:10,b:100};
则class1的每个实例都会从prototype继承a和b这两个属性。
同时,每个对象都会有一个内部的属性_proto_(不同的javascript虚拟机实现用的名字可能不同),这个属性对js开发人员不可见,只在虚拟机内部使用。每当创建一个对象的时候,这个对象的_proto_就会被赋值为这个对象的构造函数的prototype,这样对象的_proto_属性和构造函数的prototype引用相同的对象,并且一旦对象创建完成,_proto_属性就不会改变。
这样通过对象的_proto_属性,以及_proto_所引用的对象的_proto_属性,就构成了一个_proto_链。 当访问一个对象的属性和方法的时候,js虚拟机正是通过这个_proto_链来查找的。
关于instanceof:
假设有一条这样的语句:
o instanceof c;
在上面的语句执行过程中,虚拟机会把c.prototype和o的_proto_链上的节点逐个进行比较,如果找到相等的节点,则返回true,否则返回false。
本文转自:http://www.cnblogs.com/Qinglong/archive/2009/03/11/1408610.html
相关文章推荐
- JavaScript html js图片滑动切换效果,幻灯片式切换,新闻展示,滚动新闻
- JSON
- 五个你必须知道的javascript和web debug技术 2013年11月20日 在前端开发中,调试技术是必不可少的技能,本文将介绍五种前端开发必备的调试技术。 Weinre移动调试 DOM 断点
- js时间倒计时
- 对ichartjs基于基于HTML5的开源图形组件画图的心得
- javascript的面向对象思想知识要点
- 推荐15款好用的JS开发工具
- 推荐15款好用的JS开发工具
- javascript中的位运算,
- Extjs日期/可编辑表格grid/显示不正确————解决方案
- mini-editor项目设计介绍(一个基于Javascript的Web编辑器)
- js相关
- JSTL自定义标签(三)
- Javascript--Function/arguments
- C# XML与Json之间相互转换实例详解
- get 和 Post 之我理解 JSP乱码
- JS随机生成不重复数据的代码分享
- ExtJs4 笔记(7) Ext.tip.ToolTip 提示
- javascript之typeof
- js正则函数test使用