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静态的动态
Sep 18 Javascript
js使用removeChild方法动态删除div元素
Aug 01 Javascript
angular简介和其特点介绍
Jan 29 Javascript
JS实现简单的二维矩阵乘积运算
Jan 26 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
Sep 20 Javascript
bootstrap实现图片自动轮播
Dec 21 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
swiper 自动图片无限轮播实现代码
May 21 Javascript
使用javascript函数编写简单银行取钱存钱流程
May 26 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
js身份证验证超强脚本
2008/10/26 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
详解Python中类的定义与使用
2017/04/11 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
学生期末评语大全
2014/04/30 职场文书
村党支部换届选举方案
2014/05/02 职场文书
电工实训报告总结
2014/11/05 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python