function Foo() {
getName = function () { console.log (1); };
return this;
}
Foo.getName = function () { console.log (2);};
Foo.prototype.getName = function () { console.log (3);};
var getName = function () { console.log (4);};
function getName() { console.log (5);}
//請寫出以下輸出結果:
Foo.getName(); //2, 函數(shù)的靜態(tài)方法,直接調(diào)用相關函數(shù)就可以了。
getName(); //4, 變量函數(shù)定義在調(diào)用之前,成功完成初始化,覆蓋函數(shù)聲明方式定義的同名函數(shù)
Foo().getName(); //1, 這里 Foo()返回的 this 是 window,在 Foo調(diào)用時,對全局的變量型函數(shù) getName 重新定義了,所以得到1。
getName(); //1, 上一句改變了全局的 getName 函數(shù)為 cosnole.log(1)
new Foo.getName(); //2,無參數(shù) new 運算比 . 運算低,所以先運行 Foo.getName,得到2
new Foo().getName(); //3,有參數(shù) new 運算和 . 運算同一等級,故從左到右,先運算 new Foo() 得到一個匿名對象,在該對象上調(diào)用 getName 函數(shù)得到3
new new Foo().getName(); //3,同上,先得到匿名對象,然后將該對象的方法 getName 當做構造函數(shù)來調(diào)用,得到一個新對象,并輸出3;
不理解第三個Foo().getName();的解釋,為什么下面這兩句話沒更改Foo()的getName的值呢?后面幾個new的求解也不是很明白,什么是有參數(shù)無參數(shù)呢
Foo.getName = function () { console.log (2);};
Foo.prototype.getName = function () { console.log (3);};先說第三個:
你可以分開來理解 foo() 執(zhí)行:
第一步window.getName = function(){console.log(1)};
第二步 return this; foo()的調(diào)用對象為 window 即 foo() == window.foo()——> return this == return window ——> foo() == window.foo() == window;
通過第二步可以明白,foo() == window ——> foo().getName() == window.getName()——> console.log(1);
下面的new 的第一個 :
new foo.getName() ——> foo.getName()
第二個
(new foo()).getName() ——> let n = new foo();n.getName();
上面有定義 foo.prototype.getName;
第三個
[new (new foo()).getName()] ——> (new foo.prototype.getName())
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。