Javascript学习笔记6 prototype的提出


Posted in Javascript onJanuary 11, 2010

首先我们继续上文的代码,我们来把这段代码延伸一下:

<script type="text/javascript"> 
var Person = function (name, age) { 
this.name = name; 
this.age = age; 
this.Introduce = function () { 
alert("My name is " + this.name + ".I'm " + this.age); 
}; 
}; 
var person1 = new Person("飞林沙", 21); 
var person2 = new Person("kym", 26); 
alert(person1.Introduce == person2.Introduce); 
</script>

结果弹出false。也就是说,这两个对象的方法是不同的方法。那么我们知道,在C#中,每个对象会维护着一个方法表,可是方法表应该指向同一块地址。如果是这样的话,那当我们声明了100个对象,是不是要建立100个对象拷贝,对空间是不是一个很大的浪费呢?

于是我们就想了这样的解决办法,用prototype:

<script type="text/javascript"> 
var Person = function (name, age) { 
this.name = name; 
this.age = age; 
}; 
Person.prototype.Introduce = function () { 
alert("My name is " + this.name + ".I'm " + this.age); 
} 
var person1 = new Person("飞林沙", 21); 
var person2 = new Person("kym", 26); 
alert(person1.Introduce == person2.Introduce); 
</script>

这样就可以了。所以你还会再说是否用prototype都是一样的么?其实我以前也是这么理解的,在这次偶然的试验中看到了这个问题。
Javascript 相关文章推荐
jQuery EasyUI API 中文文档 - ComboBox组合框
Oct 07 Javascript
jQuery Validate初步体验(二)
Dec 12 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
Aug 01 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
Aug 04 Javascript
Bootstrap笔记之缩略图、警告框实例详解
Mar 09 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
Apr 22 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
详解vue的双向绑定原理及实现
May 05 Javascript
详解vue中移动端自适应方案
May 05 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
JavaScript如何判断对象有某属性
Jul 03 Javascript
Javascript学习笔记5 类和对象
Jan 11 #Javascript
Javascript学习笔记4 Eval函数
Jan 11 #Javascript
Javascript学习笔记2 函数
Jan 11 #Javascript
Javascript学习笔记1 数据类型
Jan 11 #Javascript
IE bug table元素的innerHTML
Jan 11 #Javascript
javascript instanceof 与typeof使用说明
Jan 11 #Javascript
javascript call方法使用说明
Jan 11 #Javascript
You might like
PHP函数eval()介绍和使用示例
2014/08/20 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
php微信开发之百度天气预报
2016/11/18 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
超清晰的document对象详解
2007/02/27 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
python如何对实例属性进行类型检查
2018/03/20 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
用python解压分析jar包实例
2020/01/16 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
python自动生成证件号的方法示例
2021/01/14 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
个人银行贷款担保书
2014/04/01 职场文书
七夕情人节促销方案
2014/06/07 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android