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 实现简单的table排序及table操作练习
Dec 28 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
js实现iframe跨页面调用函数的方法
Dec 13 Javascript
js实现文字跟随鼠标移动而移动的方法
Feb 28 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
JavaScript正则表达式实例详解
Oct 16 Javascript
Bootstrap popover用法详解
Dec 22 Javascript
解决jquery appaend元素中id绑定事件失效的问题
Sep 12 jQuery
bootstrap轮播模板使用方法详解
Nov 17 Javascript
js操作二进制数据方法
Mar 03 Javascript
Vue面试题及Vue知识点整理
Oct 07 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
Mar 09 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的hash算法介绍
2014/02/13 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python for循环生成列表的实例
2018/06/15 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
python map比for循环快在哪
2020/09/21 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
表达自我的市场:Society6
2018/08/01 全球购物
设备动力科岗位职责范本
2014/02/23 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
建党伟业观后感
2015/06/01 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA