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 键盘记录实现(兼容FireFox和IE)
Feb 07 Javascript
javascript 广告后加载,加载完页面再加载广告
Nov 25 Javascript
js有序数组的连接问题
Oct 01 Javascript
常用Javascript函数与原型功能收藏(必看篇)
Oct 09 Javascript
AngularJS动态绑定HTML的方法分析
Nov 07 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 Javascript
微信公众号平台接口开发 菜单管理的实现
Aug 14 Javascript
使用zrender.js绘制体温单效果
Oct 31 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 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中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
php短址转换实现方法
2015/02/25 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
python实现简单遗传算法
2018/03/19 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
Django工程的分层结构详解
2019/07/18 Python
python实现倒计时小工具
2019/07/29 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python 项目转化为so文件实例
2019/12/23 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
企业厂长岗位职责
2013/12/17 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
解除合同协议书
2014/04/17 职场文书
软件售后服务方案
2014/05/29 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书