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

Javascript
Javascript初学者实例教程(5):Document对象
JS初学者实例教程(6):Document对象读取表单元素
JS初学者实例教程(7):注册表单验证
JS初学者实例教程(8):单选按钮、复选按钮
JS初学者实例教程(9):下拉菜单和链接属性
Javascript初学者实例教程(11):鼠标动作
Javascript初学者实例教程(12):访问XML节点
JavaScript类
网页内应用JS的最好方法
JS两种定义Function非常常用的方法
网页JavaScript运行时IE产生警告栏解决方法
处理大量JavaScript对象的好选择:JSON
JSON(JavaScript Object Notation)
javascript用法:break,continue和return语句
JS获取各种浏览器窗口的大小
JavaScript发展与互联网
IE地址栏实现的JS有趣效果和应用
Javascript如何应用到网页中
Javascript条件判断语句的小技巧
Firebug Lite使用在IE、Opera、Safari浏览器

Javascript学习笔记6 prototype的提出


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