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