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 相关文章推荐
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
Jan 10 Javascript
js表单提交和submit提交的区别实例分析
Dec 10 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
socket.io学习教程之基本应用(二)
Apr 29 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
用Vue.js方法创建模板并使用多个模板合成
Jun 28 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 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二维数组用键名分组相加实例函数
2013/11/06 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
一个基于jquery的图片切换效果
2010/07/06 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
jQuery中index()方法用法实例
2014/12/27 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
JS中Location使用详解
2015/05/12 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
教你安装python Django(图文)
2013/11/04 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Python列表切片操作实例总结
2019/02/19 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
难忘的一天教学反思
2014/04/30 职场文书
施工安全标语
2014/06/07 职场文书
驻村工作先进事迹
2014/08/14 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
爱护环境建议书
2015/09/14 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
Python实现文字pdf转换图片pdf效果
2022/04/03 Python