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 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
Firefox div高度自适应
Apr 28 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
Jan 07 Javascript
早该知道的7个JavaScript技巧
Mar 27 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
Jan 26 Javascript
javascript数据类型示例分享
Jan 19 Javascript
jQuery实现行文字链接提示效果的方法
Mar 10 Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 Javascript
Javascript中Promise的四种常用方法总结
Jul 14 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
php检测useragent版本示例
2014/03/24 PHP
php实现求相对时间函数
2015/06/15 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python 数据结构之旋转链表
2017/02/25 Python
python实现扫描日志关键字的示例
2018/04/28 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
阿德的梦教学反思
2014/02/06 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
Python如何加载模型并查看网络
2022/07/15 Python