函數調用的問題
;(function($){
? ? var LightBox=function(){
var self=this;
//創建遮罩對象
this.popupMask=$('<div id="G-ligthtbox-mask">');
//創建lightbox外層
this.popupWin=$('<div id="G-lightbox-popup">');
this.bodyNode=$('body');
this.renderDOM();
? ? }
LightBox.prototype={
renderDOM:function(){
alert(this)
}
}
? window["LightBox"]=LightBox;
})(jQuery);
renderDOM這個函數是在原型對象上,但是為什么LightBox對象上能正常調用,??能夠幫我解釋一下嗎?謝謝!
2016-08-31
因為LightBox對象上有一個屬性__proto__,是指向了他自己的原型(LightBox.prototype),而這里LightBox對象本身是沒有renderDOM這個函數的,因此會沿著__proto__向上查找,找到LightBox.prototype,而它上面有這個函數,就可以正常調用了,你既然了解原型,應該知道原型鏈吧,這個就是原型鏈