js的prototype()应用

给原型对象增加函数,就是让对象拥有公用的函数;

//给数组原型增加一个打乱数组的函数
Array.prototype.shuffle=function(){
var value = this.valueOf(),len = this.length,temp,key;
while(len--){
//随机生成数组的下标
key = Math.floor(Math.random()*len);
//temp为中间交换变量
temp = value[key];
value[key] = value[len];
value[len] = temp;
}
return value;
}
var arr1 = [0,1,2,3,4,5,6,7,8,9];
var arr2 = ['a','b','c','d','e','f'];    
alert(JSON.stringify(arr1.shuffle()));
alert(JSON.stringify(arr2.shuffle()));

给原型对象增加属性,也就是给对象增加公用的属性;

function fun(){
        
}
fun.prototype.name = '小东';
fun.prototype.arr = [1,2,3,4];//这里的属性可以是数组,也可以是对象
var ob1 = new fun();
var ob2 = new fun();
alert(JSON.stringify(ob1.name));
alert(JSON.stringify(ob2.arr));

实现原型继承;

function P1(){
    }
    function P2(){ 
    }
    //原型对象增加属性和方法
    P2.prototype.name = 'P2"s name';
    P2.prototype.get=function(value){
            return value;
    }
    //实例化P2构造函数的一个对象
    var obp2 = new P2();//这个对象应该包含所有原型对象的属性和方法
    //给P1的原型对象赋值一个对象,相当于P1继承了obp2的所有属性和方法
    P1.prototype = obp2;//这个式子,简单来讲就类似于a = b, b赋值给a这个总该明白吧?
    //调用P1从obp2继承过来的get函数
    alert(P1.prototype.get('out"s name'));
    //展示P1从obp2继承过来的name属性
    alert(P1.prototype.name);
    //用构造函数P1实例化一个obp1对象
    var obp1 = new P1();
    //P1的原型对象prototype既然已经继承了obp2的所有属性和函数,那么依据P1所实例化出来的对象也都有obp2的属性和函数了
    alert(obp1.get('obp1"s name'));

参考:http://www.cnblogs.com/loveyoume/p/6139681.html

你可能感兴趣的:(js的prototype()应用)