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 07 Javascript
Jquery.Form 异步提交表单的简单实例
Mar 03 Javascript
javascript内置对象arguments详解
Mar 16 Javascript
jQuery中nextUntil()方法用法实例
Jan 07 Javascript
浅析angularJS中的ui-router和ng-grid模块
May 20 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Dec 14 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
Aug 17 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
微信小程序sessionid不一致问题解决
Aug 30 Javascript
js tab栏切换代码实例解析
Sep 03 Javascript
JavaScript 中的无穷数(Infinity)详解
Feb 13 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 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 $_SERVER详解
2009/01/16 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
支付宝小程序tabbar底部导航
2018/11/06 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
python cookie反爬处理的实现
2020/11/01 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
人事专员岗位职责
2013/11/20 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
签订劳动合同通知书
2015/04/16 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python