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

Javascript
对YUI扩展的Gird组件 Part-1
xtree.js 代码
newxtree.js代码
jQuery使用手册之一
jQuery使用手册之二 DOM操作
Javascript中eval函数的详细用法与说明
JavaScript 中的事件教程
JavaScript初级教程(第二课)
JavaScript初级教程(第三课)
JavaScript初级教程(第四课)
JavaScript初级教程(第五课)
诘屈聱牙之javascript中国象棋
filemanage功能中用到的common.js
filemanage功能中用到的lib.js
Javascript中eval函数的使用方法与示例
用javascript控制iframe滚动的代码
总结两个Javascript的哈稀对象的一些编程技巧
疯掉了,尽然有js写的操作系统
用javascript实现select的美化的方法
javascript+dom树型菜单类,希望朋友们一起进步

Javascript学习笔记6 prototype的提出


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-20   浏览: 184 ::
收藏到网摘: 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都是一样的么?其实我以前也是这么理解的,在这次偶然的试验中看到了这个问题。