functionFoo(){getName=function(){alert(1);}console.log(this)returnthis;}Foo.getName=function(){alert(2);}Foo.prototype.getName=function(){alert(3);}vargetName=function(){alert(4);}functiongetName(){alert(5);}Foo.getName();//2這里是不是因為構(gòu)造函數(shù)Foo中的getName方法沒有this關(guān)鍵字,所以就不是1,而是直接采用外部的方法,意思就是Foo對象調(diào)用getName的時候彈出2??getName();//4Foo().getName();//1這里為什么是1呢?是因為Foo返回了this對象,這里的this對象是window,所以這句話的意思不是應(yīng)該等同window.getName()??那應(yīng)該是4啊為什么是1getName();//1這里變成1是不是因為3的那一步Foo返回了this對象,所以改變了全局函數(shù)getName??所以返回1newFoo.getName();//2newFoo().getName();//3newnewFoo().getName();//35-7不是很理解,解釋不出原因。5是不是new關(guān)鍵字其實沒起什么作用呢?都只是調(diào)用一個方法而已?
幾處代碼不知是否理解正確?
明月笑刀無情
2019-05-22 17:58:09