JavaScript複習繼續

  • ng-class是用於給元素綁定樣式;用法:

  1. <div ng-class="{'A':isA,'B':isB,'C':isC}"></div> 
  2. <div   ng-class = "{{A}}" > </ div >  
  • ng-if  指令用於在表達式爲 false 時移除 HTML 元素。如果 if 語句執行的結果爲 true,會添加移除元素,並顯示。ng-if  指令不同於 ng-hide, ng-hide 隱藏元素,而  ng-if  是從 DOM 中移除元素。
  • ng-app  指令用於告訴 AngularJS 應用當前這個元素是根元素。所有 AngularJS 應用都必須要要一個根元素。HTML 文檔中只允許有一個 ng-app 指令,如果有多個 ng-app 指令,則只有第一個會被使用。
  • ng-if  指令用於在表達式爲 false 時移除 HTML 元素。如果 if 語句執行的結果爲 true,會添加移除元素,並顯示。ng-if  指令不同於 ng-hide, ng-hide 隱藏元素,而  ng-if  是從 DOM 中移除元素。
  • ng-click給元素綁定監聽
  • ng-show顯示 ng-hide隱藏 
  • 數組本身就是一個對象;可以對數據進行一種存儲;arr.length,對arr對象的length屬性進行一個訪問

  • 在標準的 JavaScript 中, Ajax 異步執行調用基於Event和callback來實現;JavaScript處理異步都是以callback的方式,在前端開發領域callback機制幾乎深入人心;
  • 所謂Promise,字面上可以理解爲“承諾”,就是說A調用B,B返回一個“承諾”給A,然後A就可以在寫計劃的時候這麼寫:當B返回結果給我的時候,A執行方案S1,反之如果B因爲什麼原因沒有給到A想要的結果,那麼A執行應急方案S2,這樣一來,所有的潛在風險都在A的可控範圍之內了。
var resB = B();
var runA = function() {
    resB.then(execS1, execS2);
};
runA();
  • 下面三個事件都是事件對象的方法:
  • stopPropagation() 阻止事件冒泡。 這個事件不會阻止定義在元素上的其他事件。

  • stopImmediatePropagation() 會徹底的阻止事件, 在其之後的綁定在元素上的其他監聽事件都不會觸發

  • preventDefault() 阻止事件的默認動作

  • js沒有選項中的其他事件
  • setTimeout的方式(註冊事件):有兩個參數,第一個參數是函數,第二參數是時間值。調用setTimeout時,把函數參數,放到事件隊列中。等主程序運行完,再調用
  • hasOwnProperty: 是用來判斷一個對象是否有你給出名稱的屬性或對象。不過需要注意的是,此方法無法檢查該對象的原型鏈中是否具有該屬性,該屬性必須是對象本身的一個成員。

    isPrototypeOf : 是用來判斷要檢查其原型鏈的對象是否存在於指定對象實例中,是則返回true,否則返回false。

  • 使用object.defineProperty可向對象添加或者修改屬性
  • 原型鏈是JS實現繼承的一種模型
  • For循環是按順序的,for in 循環是不一定按順序的
  • 在原型上擴展的可枚舉方法,會被for in循環出來

this指的就是windows

 

  • console.log(1+ +"2"+"2");

    第一個+"2"中的加號是一元加操作符,+"2"會變成數值2,因此1+ +"2"相當於1+2=3.
    然後和後面的字符串“2”相合並,變成了字符串"32".
  • console.log("A""B"+"2");

    "A"-"B"的運算中,需要先把"A"和"B"用Number函數轉換爲數值,其結果爲NaN,在剪髮操作中,如果有一個是NaN,則結果是NaN,因此"A"-"B"結果爲NaN。
    然後和"2"進行字符串合併,變成了NaN2
  • console.log("A""B"+2);

    根據上題所述,"A"-"B"結果爲NaN,然後和數值2進行加法操作,在加法操作中,如果有一個操作數是NaN,則結果爲NaN
  • 一元加操作符以一個加號(+)表示,放在數值前面,對數值不會產生任何影響, 
    var num=25;
    num=+num;
    console.log(num);/25

    在對非數值應用一元加操作符時,該操作符會像 Number()轉型函數一樣對這個值執行轉換。 換句話說,布爾值 false 和 true 將被轉換爲 0和 1,字符串值會被按照一組特殊的規則進行解析,而 對象是先調用它們的 valueOf()和(或)toString()方法,再轉換得到的值.

var S1 = "01";
var S2 = "1.1";
var S3 = "z";
var b = false;
var f = 1.1;
var o = { valueOf: function () { return -1; } };
S1=+S1;
S2=+S2;
S3=+S3;
b=+b;
f=+f;
o=+o;
console.log(S1);//1
console.log(S2);//1.1
console.log(S3);//NAN
console.log(b);//0
console.log(f);//1.1
console.log(o);//-1

 

  • .ajax() 方法通過 HTTP 請求加載遠程數據。$.ajax(opts);opts爲json格式,常見參數url、type、data等
  • load() 方法從服務器加載數據,並把返回的數據放入被選元素中。$(selector).load(URL,data,callback);

    必需的 URL 參數規定您希望加載的 URL。

    可選的 data 參數規定與請求一同發送的查詢字符串鍵/值對集合。

    可選的 callback 參數是 load() 方法完成後所執行的函數名稱。

  • $.get() 方法通過 HTTP GET 請求從服務器上請求數據。

    $.get(URL,callback);

    必需的 URL 參數規定您希望請求的 URL。

    可選的 callback 參數是請求成功後所執行的函數名。

  • getScript() 方法通過 HTTP GET 請求載入並執行 JavaScript 文件。

    jQuery.getScript(url,success(response,status));

  • pop()方法用於刪除數組的最後一個元素,並返回被刪除的最後一個元素,這樣的話數組就被改變了。

    splice()方法可以對數組中已經存在元素進行刪除,也可以添加元素到數組中。

    sort()方法對數組中所有的元素都進行排序,如果沒有提供比較函數compareFunction,則按照字符串的Unicode碼的順序進行排序。

    所以以上三種方法都改變了數組。

    而  concat()方法用於連接兩個或多個數組。該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本,返回一個新的數組。該數組是通過把所有的arrayX參數添加到arryaObject中生成的,如果要進行 concat()操作的參數是數組,那麼添加的是數組中的元素,而不是數組。

  • $emit() 是向上冒泡

    $broadcast() 是向下傳播事件 需給子scope發送消息,需使用

  • var f = function g() {
        return 23;
    };
    // console.log(typeof g());報錯
    console.log(typeof f);//function

    在 JS 裏,聲明函數只有 2 種方法:
    第 1 種: function foo(){...} (函數聲明)
    第 2 種: var foo = function(){...} (等號後面必須是匿名函數,這句實質是函數表達式)

  • 一個promise可能有三種狀態:等待(pending)、已完成(fulfilled)、已拒絕(rejected)
  • 一個promise的狀態只可能從“等待”轉到“完成”態或者“拒絕”態,不能逆向轉換,同時“完成”態和“拒絕”態不能相互轉換
  • promise必須實現then方法(可以說,then就是promise的核心),而且then必須返回一個promise,同一個promise的then可以調用多次,並且回調的執行順序跟它們被定義時的順序一致
  • then方法接受兩個參數,第一個參數是成功時的回調,在promise由“等待”態轉換到“完成”態時調用,另一個是失敗時的回調,在promise由“等待”態轉換到“拒絕”態時調用。同時,then可以接受另一個promise傳入,也接受一個“類then”的對象或方法,即thenable對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章