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 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
javaScript 读取和设置文档元素的样式属性
Apr 14 Javascript
Grid得到选择行数据的方法总结
Jan 17 Javascript
最新28个很棒的jQuery 教程
May 28 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
Dec 12 Javascript
使用正则表达式的格式化与高亮显示json字符串
Dec 03 Javascript
jquery中toggle函数交替使用问题
Jun 22 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
详解angularjs popup-table 弹出框表格指令
Sep 20 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
JS通过位运算实现权限加解密
Aug 14 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
Sep 16 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原理之异常机制
2010/08/21 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python 正确保留多位小数的实例
2018/07/16 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
python批量生成条形码的示例
2020/10/10 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
德国高尔夫商店:Par71.de
2020/11/29 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
九年级体育教学反思
2014/01/23 职场文书
采购部经理岗位职责
2014/02/10 职场文书
军训学生自我鉴定
2014/02/12 职场文书
毕业留言寄语大全
2014/04/10 职场文书
高三复习计划
2015/01/19 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
Python 数据可视化之Seaborn详解
2021/11/02 Python