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实现下拉提示选择框
Dec 29 Javascript
javascript随机抽取0-100之间不重复的10个数
Feb 25 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
javascript实现Java中的Map对象功能的实例详解
Aug 21 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
May 05 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
Nov 29 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
Javascript原生ajax请求代码实例
Feb 20 Javascript
Vue中点击active并第一个默认选中功能的实现
Feb 24 Javascript
vue中使用腾讯云Im的示例
Oct 23 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+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
python实现类的静态变量用法实例
2015/05/08 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
python 伯努利分布详解
2020/02/25 Python
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
保险经纪人求职信
2014/03/11 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
《秋游》教学反思
2014/04/24 职场文书
企业精神口号
2014/06/11 职场文书
预备党员个人总结
2015/02/14 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
mysql sock文件存储了什么信息
2022/07/15 MySQL