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 相关文章推荐
Chrome中JSON.parse的特殊实现
Jan 12 Javascript
JavaScript获取当前页面上的指定对象示例代码
Feb 28 Javascript
js检测网络是否具体连接功能的代码
May 23 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
Nov 04 Javascript
利用jquery实现下拉框的禁用与启用
Dec 07 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 Javascript
jQuery实现大图轮播
Feb 13 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
详解vue父子组件关于模态框状态的绑定方案
Jun 05 Javascript
Vue 一键清空表单的实现方法
Feb 07 Javascript
vue中实现动态生成二维码的方法
Feb 21 Javascript
vue中渲染对象中属性时显示未定义的解决
Jul 31 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
Add a Table to a Word Document
2007/06/15 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
python求列表交集的方法汇总
2014/11/10 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
python定时截屏实现
2020/11/02 Python
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
办公室年终个人自我评价
2013/10/28 职场文书
春风行动实施方案
2014/03/28 职场文书
投资意向书范本
2014/04/01 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
干部个人考察材料
2014/12/24 职场文书
开幕式邀请函
2015/01/31 职场文书
车辆管理制度范本
2015/08/05 职场文书
信息技术国培研修日志
2015/11/13 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
使用javascript解析二维码的三种方式
2021/11/11 Javascript