JavaScript 解惑

俗話說"挖坑容易, 填坑難", 可能不是坑, 走的人多了也就變成了坑. 哎, 且看我能為後人填多少坑吧, 能填多少是多少吧.

坑: this

JavaScript裡面的坑真的是很多啊, 比如說 this, 估計就難道了很多人. 其實很簡單, 就是無論是誰call的這個對象, this就refer它了.

  1. 在定義函數(shù)function的時候, this指的是window
  2. 在Object裏面定義函數(shù)的時候, this指的是這個Object
  3. 在定義內(nèi)函數(shù)的時候, this 指的是window. (內(nèi)函數(shù)不傳遞this)

例子(jQuery):

做練習(xí), 圖方便, 沒有下載到本地, 直接load網(wǎng)上的


``` javascript 
(function(){
    var obj = {
      doIt: function(e){
          console.log(this);
          e.preventDefault();
      }
    };
    $('a').on('click',  obj.doIt); 
})();

這裡的this指的是, anchor, 因為是a叫的function 'obj.doIt'

(function(){
    var obj = {
      doIt: function(){
          console.log(this);
      }
    };
    $('a').on('click', function(e){
        obj.doIt();
        e.preventDefault();
    });
})();

這裡的this指的是, obj本身, 因為沒有任何東西傳入到obj.doIt()裡面去.

如果還是聽不懂額, 這麼多選擇到底怎們辦啊?
對於新手來說, jQuery指出了一條簡潔的道路, 那就是用這個
$('a').on('click', $.proxy(obj.doIt, obj)); 把特定的Object傳入進去, 可以refer API. 當然, 這裡的this, 永遠都refer後面的obj.

坑: call 和 apply

call和apply之間有什麼區(qū)別? 據(jù)我所致, 毛線都沒有.
僅僅是兩個不同function的名字了, 比如說 裡面 vs 裏面.

  1. call的第二個及以後的parameter接受的是單獨的parameter.
  2. apply的第二個parameter接受到的是array(數(shù)組).
call(this, a,b,c,d);
apply(this, [a,b,c,d]);

坑: css 和 animate

這個算是jQuery裡面獨有的吧. css沒有反映時間, 效果是立即呈現(xiàn)的; animate 與之相反, 但是"只有數(shù)字值可創(chuàng)建動畫(比如 "margin:30px")鱼的。字符串值無法創(chuàng)建動畫(比如 "background-color:red")亭螟。"

例子

    $('button').on('click', function () {
       box.css({
           'left': w,
           'top': h
           'position': 'absolute'
       })
    });

效果立顯. 位置, 方式等全部都改變.

    $('button').on('click', function () {
       box.animate({
           'left': w,
           'top': h
           'position': 'absolute'
       })
    });

相反, 只有位置改變, 方式不改變(position 無效).

坑: 本地圖片 vs 網(wǎng)絡(luò)圖片

做練習(xí), 偷懶沒有將圖片下載到本地, 直接調(diào)用網(wǎng)絡(luò)上的圖片, 如下

        <div class="slider">
            <ul>
                <li>
                    <img src="https://octodex.github.com/images/saritocat.png" alt="saritocat"/>
                </li>
                <li>
                    <img src="https://octodex.github.com/images/topguntocat.png" alt="labtocat"/>
                </li>
                <li>
                    <img src="https://octodex.github.com/images/octoliberty.png" alt="octoliberty"/>
                </li>
                <li>
                    <img src="https://octodex.github.com/images/twenty-percent-cooler-octocat.png" alt="21"/>
                </li>
            </ul>
        </div>

用這個方法

    var sliderUL = $('div.slider').css('overflow', 'hidden').children('ul'),
        imgs = sliderUL.find('img'),
        imgWidth = imgs[0].width,
        console.log('pic width: '+imgs[0].width);

imgWidth為0, 將圖片換位本地後, 算出正常width, 又是jQuery的一個坑. 當然了, 另外一個解決方法就是將function傳入window.load之後.

$(window).load(function() {
     // content
});

順便提一句, $(document).ready(function(){})$(window).load(function(){})的區(qū)別就是, 前者是DOM ready, 後這是content ready, 比如說圖片.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末华糖,一起剝皮案震驚了整個濱河市坏为,隨后出現(xiàn)的幾起案子溺健,更是在濱河造成了極大的恐慌逛腿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝴蜓,死亡現(xiàn)場離奇詭異碟绑,居然都是意外死亡,警方通過查閱死者的電腦和手機茎匠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門格仲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汽抚,你說我怎么就攤上這事抓狭〔。” “怎么了造烁?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵否过,是天一觀的道長。 經(jīng)常有香客問我惭蟋,道長苗桂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任告组,我火速辦了婚禮煤伟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘木缝。我一直安慰自己便锨,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布我碟。 她就那樣靜靜地躺著放案,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矫俺。 梳的紋絲不亂的頭發(fā)上吱殉,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音厘托,去河邊找鬼友雳。 笑死,一個胖子當著我的面吹牛铅匹,可吹牛的內(nèi)容都是我干的押赊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼包斑,長吁一口氣:“原來是場噩夢啊……” “哼考杉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舰始,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤崇棠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丸卷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枕稀,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年谜嫉,在試婚紗的時候發(fā)現(xiàn)自己被綠了萎坷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡沐兰,死狀恐怖哆档,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情住闯,我是刑警寧澤瓜浸,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布澳淑,位于F島的核電站,受9級特大地震影響插佛,放射性物質(zhì)發(fā)生泄漏杠巡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一雇寇、第九天 我趴在偏房一處隱蔽的房頂上張望氢拥。 院中可真熱鬧,春花似錦锨侯、人聲如沸嫩海。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽出革。三九已至,卻和暖如春渡讼,著一層夾襖步出監(jiān)牢的瞬間骂束,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工成箫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留展箱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓蹬昌,卻偏偏與公主長得像混驰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子皂贩,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容