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 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
Dec 28 Javascript
防止按钮在短时间内被多次点击的方法
Mar 10 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
May 24 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
Jun 26 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
详解webpack 最简打包结果分析
Feb 20 Javascript
layui中的switch开关实现方法
Sep 03 Javascript
QT与javascript交互数据的实现
May 26 Javascript
小程序实现侧滑删除功能
Jun 25 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 8小时时间差的解决方法小结
2009/12/22 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
python实现发送和获取手机短信验证码
2016/01/15 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
python 安装移动复制第三方库操作
2020/07/13 Python
Pycharm调试程序技巧小结
2020/08/08 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
大学生自荐书范文
2013/12/10 职场文书
退休感言
2014/01/28 职场文书
初中美术教学反思
2014/01/29 职场文书
老师的检讨书
2014/02/23 职场文书
贷款担保申请书
2014/05/20 职场文书
团干部培训方案
2014/06/03 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
在职员工证明书
2014/09/19 职场文书
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python