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 相关文章推荐
ie和firefox中img对象区别的困惑
Dec 27 Javascript
ECMAScript 基础知识
Jun 29 Javascript
JavaScript?Apple设备检测示例代码
Nov 15 Javascript
让IE8浏览器支持function.bind()方法
Oct 16 Javascript
自定义百度分享的分享按钮
Mar 18 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
用p5.js制作烟花特效的示例代码
Mar 21 Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
vue下拉列表功能实例代码
Apr 08 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
Jul 19 Javascript
js实现GIF动图分解成多帧图片上传
Oct 24 Javascript
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
Python正则表达式的使用范例详解
2014/08/08 Python
python语言中with as的用法使用详解
2018/02/23 Python
python3 mmh3安装及使用方法
2019/10/09 Python
Python笔记之工厂模式
2019/11/20 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
美丽的现代设计家具:2Modern
2018/07/26 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
企业内控岗位的职责
2014/02/07 职场文书
装饰活动策划方案
2014/02/11 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
司机工作自我鉴定
2014/09/19 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
2016年记者节感言
2015/12/08 职场文书
学生检讨书范文
2019/06/24 职场文书
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers