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 相关文章推荐
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 Javascript
jquery应该如何来设置改变按钮input的onclick事件
Dec 10 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 Javascript
JavaScript中常见的字符串操作函数及用法汇总
May 04 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
Aug 12 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
Feb 25 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
May 10 Javascript
轻松5句话解决JavaScript的作用域
Jul 15 Javascript
使用Angular缓存父页面数据的方法
Jan 03 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
three.js实现圆柱体
Dec 30 Javascript
JS继承定义与使用方法简单示例
Feb 19 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/06 冲泡冲煮
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
Python实现Linux命令xxd -i功能
2016/03/06 Python
Python变量赋值的秘密分享
2018/04/03 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
经贸日语专业个人求职信
2013/12/13 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
外联部演讲稿
2014/05/24 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
i7 6700处理器相当于i5几代
2022/04/19 数码科技