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操作元素定位元素的实例
Oct 29 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
详解vue+webpack+express中间件接口使用
Jul 17 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
react项目如何使用iconfont的方法步骤
Mar 13 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
php字符串截取的简单方法
2013/07/04 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
Python实现控制台中的进度条功能代码
2017/12/22 Python
对python 调用类属性的方法详解
2019/07/02 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
电气技术员岗位职责
2013/11/19 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
《从现在开始》教学反思
2016/02/16 职场文书