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


Posted in Javascript onFebruary 12, 2014

对象创建:

当一个函数对象被创建时候,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
Javascript 相关文章推荐
几种设置表单元素中文本输入框不可编辑的方法总结
Nov 25 Javascript
在JavaScript中判断整型的N种方法示例介绍
Jun 18 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
纯javascript实现图片延时加载方法
Aug 21 Javascript
JS实现的最简Table选项卡效果
Oct 14 Javascript
JS二叉树的简单实现方法示例
Apr 05 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
Dec 26 Javascript
原生JS进行前后端同构
Apr 22 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
javascript实现文本域写入字符时限定字数
Feb 12 #Javascript
js 绑定键盘鼠标事件示例代码
Feb 12 #Javascript
动态加载jquery库的方法
Feb 12 #Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 #Javascript
javascript获取web应用根目录的方法
Feb 12 #Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 #Javascript
raphael.js绘制中国地图 地图绘制方法
Feb 12 #Javascript
You might like
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
jquery对table做排序操作的实例演示
2017/08/10 jQuery
webpack打包react项目的实现方法
2018/06/21 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
vue props对象validator自定义函数实例
2019/11/13 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
Python爬取国外天气预报网站的方法
2015/07/10 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
环保倡议书400字
2014/05/15 职场文书
2015年酒店工作总结
2015/04/28 职场文书
社团招新宣传语
2015/07/13 职场文书
小学音乐课教学反思
2016/02/18 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript
win10更新失败无限重启解决方法
2022/04/19 数码科技