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 相关文章推荐
捕获关闭窗口的脚本
Jan 10 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 Javascript
js动态添加事件并可传参数示例代码
Oct 21 Javascript
jquery高级编程的最佳实践详解
Mar 23 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
Dec 29 Javascript
js编写三级联动简单案例
Dec 21 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
Vue中父子组件通讯之todolist组件功能开发
May 21 Javascript
使用JavaScript破解web
Sep 28 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
封装 axios+promise通用请求函数操作
Aug 11 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
php5数字型字符串加解密代码
2008/04/24 PHP
PHP中文乱码解决方案
2015/03/05 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
JS 时间显示效果代码
2009/08/23 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
小程序实现多选框功能
2018/10/30 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
python实现图片批量压缩程序
2018/07/23 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
秋游活动策划方案
2014/02/16 职场文书
项目经理聘任书
2014/03/29 职场文书
土地转让协议书范本
2014/04/15 职场文书
民主评议党员个人总结
2015/02/13 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
法制教育主题班会
2015/08/13 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
全新239军机修复记
2022/04/05 无线电
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js