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 学习笔记 传智博客佟老师附详细注释
Sep 12 Javascript
用jquery存取照片的具体实现方法
Jun 30 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
JS实现电商放大镜效果
Aug 24 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
May 08 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 Javascript
jquery绑定事件 bind和on的用法与区别分析
May 22 jQuery
vue render函数动态加载img的src路径操作
Oct 26 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 数字左侧自动补0
2008/03/31 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
Python Property属性的2种用法
2015/06/21 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
详解Python_shutil模块
2019/03/15 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
学生会竞选自荐信
2013/10/12 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
婚前协议书范本两则
2014/10/16 职场文书
领导新年致辞2016
2015/07/29 职场文书