====== Javascript - Prototype ======
每个函数都有一个原型对象属性,对象没有原型对象属性。
function Bird(){
}
var bird = new Bird();
alert(Bird.prototype); // [object Object]
alert(bird.prototype); // undefined
使用prototype实现继承:
function Animal(){
this.color = "red";
}
function Bird(){
this.name="小鸟";
}
var b = new Bird();
alert(b.color); // undefined
Bird.prototype = new Animal();
var b_ = new Bird();
alert(b_.color); // red
使用prototype扩展现有系统函数:
在javascript中Array有个push()方法,可以向数组中添加新的元素,数组是有序且可以重复的,有时候需要数组中的元素不重复(如果数组中存放的是对象,对象的比较需要自己实现),这时候可以使用prototype扩张现有的数组的方法。
Array.prototype.pushEx = function(obj){
var a = true;
for (var i = 0; i < this.length; i++) {
if (this[i]== obj) {
this[i] = obj;
a =false;
break;
}
}
if(a){
this.push(obj);
}
return this.length;
}
var test1 = new Array();
test1.pushEx("bb");
test1.pushEx("bb");
test1.pushEx("dd");
alert(test1) //bb,dd
====== Javascript - Prototype2 ======
* JavaScript 是基于对象的,任何元素都可以看成对象。然而,类型和对象是不同的。本文中,我们除了讨论类型和对象的一些特点之外,更重要的是研究如何写出好的并且利于重用的类型。毕竟,JavaScript这种流行的脚本语言如果能够进行良好的封装,并形成一个庞大的类型库,对于重用是非常有意义的。
* 网上对于prototype的文章很多,一直没明白核心的思想。最后写了很多例子代码后才明白:prototype只能用在类型上。
* 以下是一些关于类型和对象的例子,大家看完例子后可能更容易理解类型和对象之间的联系: