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 相关文章推荐
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
jquery实现简洁文件上传表单样式
Nov 02 Javascript
微信小程序 devtool隐藏的秘密
Jan 21 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
layui表格数据重载
Jul 27 Javascript
vue自动化路由的实现代码
Sep 30 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
Oct 25 Javascript
vue h5移动端禁止缩放代码
Oct 28 Javascript
Vue实现浏览器打印功能的代码
Apr 17 Javascript
Vue时间轴 vue-light-timeline的用法说明
Oct 29 Javascript
JavaScript控制台的更多功能
Apr 28 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二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP实现图片压缩
2020/09/09 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
js实现打字小游戏
2019/12/17 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
Python中itertools模块用法详解
2014/09/25 Python
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
python识别验证码图片实例详解
2020/02/17 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
如何用Python徒手写线性回归
2021/01/25 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
python 对图片进行简单的处理
2021/06/23 Python