javascript中的new使用


Posted in Javascript onMarch 20, 2010

所以javascript中没有类的概念。理解这一点很重要,很多javascript教程为了让读者更容易理解,会套用他们常用的类模式中的概念,这 样反而让大家产生歧义。
先进段代码,  

function employee(){ 
this.name=""; 
this.dept=""; 
} 
employee.prototype={ 
say:'hello' 
} 
var p = new employee();

这段代码,我们会经常用到,其中new关键字最容易引起混淆的一处。这里的new和.NET中的所做的工作不同。
我们可以这样理解javascript中用new操作创建实例的过程,new关键字以employee()为模板创建了一个新的对象,它复制了employee构造器中的成员变量(也可以理解为,将p对象作为参数传入构造函数中,并且应用函数中所有this的成员变量),同时继承了构造器的原型。
我们用代码模拟new的过程。
//var p = new Object() is also correct. 
var p ={}; 
employee.apply(p); 
p.__proto__ = employee.prototype;

__proto__ 是 javascript对象实例一个内部属性,它指向构造函数即employee的prototype属性,当对象查找某一成员变量时,例如p.say,首先查找自己的成员属性,如果找到了,返回值,如果没找到,就去调用__proto__来检查原型链,当前例子,也就是在employee.prototype中找到say成员。
Javascript 相关文章推荐
javascript dom 基本操作小结
Apr 11 Javascript
php跨域调用json的例子
Nov 13 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
Nov 22 Javascript
jquery插件orbit.js实现图片折叠轮换特效
Apr 14 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
Jul 07 Javascript
js只执行1次的函数示例
Jul 20 Javascript
JSON与String互转的实现方法(Javascript)
Sep 27 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
three.js 制作动态二维码的示例代码
Jul 31 Javascript
javascript 操作select下拉列表框的一点小经验
Mar 20 #Javascript
js 格式化时间日期函数小结
Mar 20 #Javascript
window.location.hash 属性使用说明
Mar 20 #Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
Mar 20 #Javascript
js 强制弹出窗口代码研究-又一款代码
Mar 20 #Javascript
js 数组克隆方法 小结
Mar 20 #Javascript
vs2003 js文件编码问题的解决方法
Mar 20 #Javascript
You might like
用php实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
eval的两组性能测试数据
2012/08/17 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
原生js实现放大镜
2017/02/20 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
vue加载完成后的回调函数方法
2018/09/07 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
Python程序中的观察者模式结构编写示例
2016/05/27 Python
python去除文件中重复的行实例
2018/06/29 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
关于Python解包知识点总结
2020/05/05 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
Python tkinter实现日期选择器
2021/02/22 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
小饰品店的创业计划书范文
2013/12/28 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
转让协议书范本
2014/04/15 职场文书
房产公证书样本
2015/01/23 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
全民创业工作总结
2015/08/13 职场文书
银行柜员工作心得体会
2016/01/23 职场文书