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 相关文章推荐
Jquery选择器 $实现原理
Dec 02 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
javascript 数组排序函数sort和reverse使用介绍
Nov 21 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
Jan 11 Javascript
js跨域访问示例(客户端/服务端)
May 19 Javascript
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 Javascript
jQuery事件与动画基础详解
Feb 23 Javascript
微信小程序实现多选框全选与取消全选功能示例
May 14 Javascript
小程序实现横向滑动日历效果
Oct 21 Javascript
浅谈JavaScript浅拷贝和深拷贝
Nov 07 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
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
protractor的安装与基本使用教程
2017/07/07 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python判断字符串是否包含子字符串的方法
2015/03/24 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
查询优化的一般准则有哪些
2015/03/08 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
工程学毕业生自荐信
2014/06/14 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2014年宣传工作总结
2014/11/18 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby