最新回答 / testname
這個應該是函數用途的問題了,如果foo()這樣寫,那函數本身就是當做window的方法使用,如果new foo(),就相當于把函數當做一個類,實例化這個類,bind方法只是對于前者來說的,如果new一個實例的話來說bind沒有絲毫作用,相當于是var func = foo; 只不過是把函數指針重新復制了一遍而已,那么傳入bind()的{a : 1}肯定也是沒用的。
2016-10-18
最新回答 / king0964
bar.call(7)是利用call改變函數bar()中的this的指向,且立即執行函數bar();由于this執行對象為7,執行語句變為“console.log(Object.prototype.toString.call(7)”,所以結果顯示“[Object Number]”
2016-10-18
最贊回答 / lym_0001
1、函數的聲明會被前置,如:function foo(){}; 會初始化在一個vo變量對象里面,這個函數的值為:foo函數本身。2、函數的表達式會被忽略掉,更不會被前置,如:var a =function fpp(){};這里的fpp是一個函數表達式(因為他要是賦值給a)在這里初始化的時候會被忽略只保留變量a,且變量a的值初始化為undefined。參照方法圖:<...圖片...>
2016-10-18
最贊回答 / 火星漫步
(function (){})()就是一個匿名函數自執行;var c = function (){}();一樣,只不過是匿名的,為了不讓瀏覽器認為是函數聲明,所以前面加了( );?return function (){}就是將函數作為返回值拋出,沒什么好說的。document.write((function(a,b){???????????return?a?+b;???????})();)是因為你write()里面有“;”write本來就是一個函數,函數里面有";"肯定會報錯,
2016-10-18
最新回答 / 樓蘭王子
第一個問題:forEach函數的聲明是這樣的:<...code...>可以看到,第一個參數是數組的值,第二個是索引,第三個是數組。如果使用時只用一個參數,只會遍歷值,不會訪問另外兩個值。第二個問題:<...code...>看見sort可以接收一個比較函數,來決定元素的排序規則,如果缺省,將按ASCII character 規則排序。是否還有疑問?
2016-10-17
最新回答 / bumuxiaojie
對象字面量定義的對象指向的就是Object,所以直接使用__proto__就可以從Object.prototype上獲取。而函數定義的是返回function,function需要在Object的原型鏈上查找
2016-10-15
最贊回答 / 時間是個魔鬼
首先get age() 、set age(v) 其實已經相當于聲明了一個age屬性,但你在上面已經聲明過一次,這在嚴格模式下會檢查出錯。然后你在get age()里試圖使用this.age 會循環調用get age()方法,最終結果就是爆棧 ~_~;另外 可以學習下chrome的調試工具的使用,通過設置斷點來觀察變量和執行順序會有很大幫助另外的另外 還是貼代碼比截圖好多了吧,提問窗左上角有個下拉框選擇語言
2016-10-14
最新回答 / 時間是個魔鬼
try..catch 或者說異常處理 在編程中是 非常非常非常 重要的 。至于為什么重要,可以說搜一下這方面的文章,當然以后敲的多了自有體會。說異常是自己輸入的不太準確,應該說我們可以制造并拋出異常 就像 throw new Error("我是被制造出來的哦")。Error 也是個對象,它負責對異常信息的包裝,這里通過它的構造函數來創建一個異常。throw 會將剛剛創建的異常拋出,如果上層還有try就會受到這個異常并對其處理,依次類推,如果最外層扔拋出異常,程序就會終止并把異常打印到控制臺。就像你之前敲代...
2016-10-13
最新回答 / 勇闖極限
這里用call是為了使用student中的2個參數name,和age來調用構造函數里的name和age,用call調用student里就不用在寫this.name=name,this.age=age了,如果還不懂的話你就上網查call和apply和bind的用法。
2016-10-11