三种引用(指针引用)关系,借助引用关系可以形成复杂的链关系,巧妙借助链关系可以实现收放自如,形散神不散的神奇效果,jquery就是其中一例:
1.对象指向属性;
2.a=b(b是对象,a为变量),a指向b;
3.实例对象指向其原型对象;
我们这里做个验证,兴建一个no原型:
var no=function(){ return new temp.init(); }
这个原型在window上下文下返回一个构造实例对象new temp.init().
接着让temp做中间变量来引用no原型对象里的内容:
var temp=no.prototype={ //将no原型赋给temp对象,让temp可以引用到no原型,这样做的好处是可以借助temp对象来扩展no原型而不污染no原型 init:function(){ var a=10; this["pro"]=a; }, func1:function(){ alert("func1"); } }
让" var temp=no.prototype={}"这样的好处是可以让temp引用到no原型,可以借助temp来扩展no原型而不污染no原型,至于怎么扩展,就在下面这点睛一笔:
temp.init.prototype=temp;
这句话的意思是:temp.init.prototype=temp=no.prototype,很直观的可以看到temp.init的实例可以借助引用关系访问到temp对象内容和no.prototype对象内容。
下面来验证是否能借助引用访问到:
temp.func2=function(){ alert(2); } no().func1(); //no.prototype里属性,可以访问 no().func2(); //temp对象扩展内容,也可以访问
巧妙运用引用关系的链结构,你会越来越体会到Js更神奇的魅力和创造性。