Javascript学习笔记6 prototype的提出
作者:bea
首先我们继续上文的代码,我们来把这段代码延伸一下: 代码如下: <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); }; }
首先我们继续上文的代码,我们来把这段代码延伸一下:
代码如下:
<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都是一样的么?其实我以前也是这么理解的,在这次偶然的试验中看到了这个问题。
有用 | 无用
代码如下:
<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关于select的相关操作说明
- JavaScript获取鼠标坐标的函数(兼容IE、FireFox、Chrome)
- 海量经典的jQuery插件集合
- JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
- jquery下操作HTML控件的实现代码
- jquery 交替为表格添加样式的代码
- jquery插件 cluetip 关键词注释
- Javascript 实现TreeView CheckBox全选效果
- javascript下判断一个对象是否具有指定名称的属性的的代码
- JavaScript 学习笔记(九)call和apply方法
- 取选中的radio的值
- javascript Object与Function使用
- Extjs学习笔记之九 数据模型(上)
- JavaScript 事件冒泡简介及应用
- JavaScript 事件冒泡应用实例分析
- Javascript 读书笔记索引贴
- Javascript学习笔记9 prototype封装继承
- Javascript学习笔记8 用JSON做原型
- Javascript学习笔记7 原型链的原理