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 相关文章推荐
javascript下4个跨浏览器必备的函数
Mar 07 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
单击和双击事件的冲突处理示例代码
Apr 03 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
Sep 08 Javascript
浅析BootStrap Treeview的简单使用
Oct 12 Javascript
Vue.js教程之计算属性
Nov 11 Javascript
vue双向数据绑定原理探究(附demo)
Jan 17 Javascript
在vue项目中集成graphql(vue-ApolloClient)
Sep 08 Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
10个实用的PHP代码片段
2011/09/02 PHP
php数组合并的二种方法
2014/03/21 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
js简单抽奖代码
2015/01/16 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
python 默认参数相关知识详解
2019/09/18 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
公司企业表扬信
2014/01/11 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
美化环境标语
2014/06/20 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
七年级思品教学反思
2016/02/20 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
python保存图片的四个常用方法
2022/02/28 Python
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers