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 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
javascript类型转换示例
Apr 29 Javascript
jQuery 复合选择器应用的几个例子
Sep 11 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
javascript实现全角转半角的方法
Jan 23 Javascript
Angular实现跨域(搜索框的下拉列表)
Feb 16 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
javascript与PHP动态往类中添加方法对比
Mar 21 Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 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
php实现单笔转账到支付宝功能
2018/10/09 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
python之super的使用小结
2018/08/13 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
设计毕业生简历中的自我评价
2013/10/01 职场文书
中专毕业生自荐信
2013/11/16 职场文书
服装厂厂长职责
2013/12/16 职场文书
年终考核评语
2014/01/19 职场文书
小学安全教育材料
2014/02/17 职场文书
股东合作协议书
2014/04/14 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
单位婚育证明范本
2014/11/21 职场文书
家电创业计划书
2019/08/05 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL