原型模式

在原型模式中this常用的有两种情况:

//this.xxx=xxx;当前类的实例;

//某一个方法中的this,看谁执行的this是谁

function Fn (){
this.x = 100;
this.y =200;
this.getX = function()
{
console.log(this.x)
        };
    }
Fn.prototype ={
constructor : Fn,
y:300,
getX : function(){
console.log(this.x)
}
getY : function(){
console.log(this.y)
    }
};
var f = new Fn;
f.getX();->100
f.prototype.getX();->undefined

给内置类的原型扩展方法

Array.prototype.myUnique = function(){

var obj = {};
for(var i= 0;i<this.length;i++){
var cur = this[i];
if(obj[cur]===cur){
this[i] = this[this.length-1];
this.length--;
i--;
continue;
    }
obj[cur] = cur;

}
obj = null;
return this;//实现链式写法
}
var ary = [.......];
ary.myUnique().sort(function(a,b){return a-b});

 所有的函数数据类型都天生自带一个属性:prototype,它存储的值是一个对象数据类型,浏览器默认为它开辟一个堆内存;

在浏览器给prototype默认开辟的这个对内存上有一个默认的属性:constructor,只想当前类本身;

每一个对象数据类型(普通对象,数组,正则,实例)都天生自带一个属性__proto__指向当前实例所属累的原型;

posted @ 2016-04-02 00:14  LeBron_J  阅读(178)  评论(0编辑  收藏  举报