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 与 php 通过json数据进行通讯示例
Mar 26 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
May 19 Javascript
JavaScript与HTML的结合方法详解
Nov 23 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
Canvas + JavaScript 制作图片粒子效果
Feb 08 Javascript
简单实现js倒计时功能
Feb 13 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
Nov 28 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
Sep 21 Javascript
JavaScript实现轮播图效果
Oct 30 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
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
一个数据采集类
2007/02/14 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
python 统计代码行数简单实例
2017/05/04 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
法定代表人资格证明书
2014/09/11 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
Python3 类型标注支持操作
2021/06/02 Python
python爬取某网站原图作为壁纸
2021/06/02 Python
mysql如何查询连续记录
2022/05/11 MySQL