问答详情
源自:-

函数调用的问题

;(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对象上能正常调用,??能够帮我解释一下吗?谢谢!

提问者:huangtinggan 2016-07-06 23:44

个回答

  • stone310
    2016-08-31 11:53:47

    因为LightBox对象上有一个属性__proto__,是指向了他自己的原型(LightBox.prototype),而这里LightBox对象本身是没有renderDOM这个函数的,因此会沿着__proto__向上查找,找到LightBox.prototype,而它上面有这个函数,就可以正常调用了,你既然了解原型,应该知道原型链吧,这个就是原型链