模仿jq的。解释prototype和__proto__

<script>
var aQuery = function(selector, context) {
var eee = new aQuery.prototype.init(selector); //实际上这里就是调用时候,执行init方法属性,然后返回“自己”对象。类似与构造函数
return eee;
}
aQuery.prototype = {
init: function(a) {
this.age = a;//这里的this,就是给自己的age属性赋值(类似与构造函数)   // aQuery.prototype.init.prototype = aQuery.prototype; 这就是为什么这句必须要有。this,就是这里赋值的(测试的时候可以看到,如果去掉,就没有__proto__)
return this;//返回给方法,方法New 出这个自己的对象。这样对象里才有 prototype 里加的这些属性。

//或者 this.age = a; 也可以写成 this.__proto__.age = a;( this.age = a;调试的时候可以看到 this的下面有个age属性age是a的值,__proto__下的age则照样是20,写成this.__proto__.age = a 才是修改__proto__下的age)
},
name: function() {
return this.age
},
al:function(a){
alert(this.age);
},
age: 20
}

aQuery.prototype.init.prototype = aQuery.prototype; //必须要有,大概意思是把aQuery.prototype,添加到后面写的 aQuery.prototype.init的属性中,这样,实例化的时候就有这些后面加的init,name,al等属性了

</script>
<div id="dd">ddd</div>

 

调用  

aQuery("sdf").al("")

 

__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。

posted @ 2015-06-24 21:06  mimo0  阅读(254)  评论(0)    收藏  举报