当前位置: 首页 > 图文教程 > 网络编程 > Javascript > Javascript学习笔记6 prototype的提出

Javascript
[HTML/CSS/Javascript]WWTJS
DynamicOptionList连动菜单代码
用meta实现的页面跳转代码
带缓冲的 收缩与展开内容效果
删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。
javascript入门·对象属性方法大总结
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
JavaScript 入门·JavaScript 具有全范围的运算符
用javascript实现模拟火焰
JavaScript加密解密7种方法总结分析
javascript一段创建层的代码
简洁的一个实现网页全屏代码
关于 byval 与 byref 的区别分析总结
表单填写时用回车代替TAB的实现方法
javascript currentTarget对象介绍
js文本中搜索关键词输入效果
javascript实现的左右选择框效果代码
JS网络游戏-(模拟城市webgame)提供的一些例子下载
javascript最短的拖动代码[兼容FF]
javascript实现的LI列表输出,隔行同色的代码

Javascript学习笔记6 prototype的提出


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-20   浏览: 190 ::
收藏到网摘: n/a

所以你还会再说是否用prototype都是一样的么?其实我以前也是这么理解的,在这次偶然的试验中看到了这个问题。 首先我们继续上文的代码,我们来把这段代码延伸一下:
复制代码 代码如下:

<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都是一样的么?其实我以前也是这么理解的,在这次偶然的试验中看到了这个问题。