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 new关键字的玄机 以及其它
Aug 25 Javascript
子页向父页传值示例
Nov 27 Javascript
jQuery 处理页面的事件详解
Jan 20 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
Sep 01 Javascript
第十篇BootStrap轮播插件使用详解
Jun 21 Javascript
getElementById().innerHTML与getElementById().value的区别
Oct 27 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
javascript基本数据类型和转换
Mar 17 Javascript
ES6新特性之Symbol类型用法分析
Mar 31 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
使用Node.js写一个代码生成器的方法步骤
May 10 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注入实例
2006/10/09 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
SVG描边动画
2017/02/23 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
对TensorFlow的assign赋值用法详解
2018/07/30 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
医学专业毕业生个人的求职信
2013/12/04 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
乳制品整治工作方案
2014/05/29 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
2015年试用期工作总结
2014/12/12 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python