js代碼學習過程中瑣碎問題彙總(持續更新)


對象屬性訪問及引號問題

  • 對象屬性名可以加引號也可以不加引號,
  • json屬性名要加雙引號
  • 訪問對象屬性時,[“屬性名”]或.屬性名,最好使用[“屬性名”],可防止報錯

匿名函數立即執行

(function(){}).call(this);(function(_this){})(this);都具有立即執行匿名函數的效用,且都將可將this指向window,避免use strict模式下this指向undefined


變量前面放置單個"+"號

可以理解爲Number(value)會將其按照Number函數的規則轉換爲數值或者NaN,規則大概如下:

1. Boolean:true返回1,false返回0
2. 數據值,直接返回
3. null,返回0
4. undefined,返回NaN
5. 對於字符串,將其轉換爲十進制數值,會忽略前面的0(16進制除外),空字符串返回0,浮點數會返回浮點數值。其他格式字符串(無論是否數字開頭,返回NaN,字符串中好幾個小數點,返回NaN)

typeof console !== ‘undefined’

主要目的是兼容低版本IE,因爲低版本原生ie(8及以下)window對象沒有console,所以直接使用的話會導致腳本中斷。完整代碼示例如下:

		if (typeof console !== "undefined" && console !== null) {
            console.error(e.stack);
        }

JQuery對象與js對象

jQuery對象其實是一個僞數組,這個數組對象包含125個方法和4個屬性
4個屬性:

  • jquery 當前的jquery框架版本號
  • length 指示該數組對象的元素個數
  • context 一般情況下都是指向HtmlDocument對象
  • selector 傳遞進來的選擇器內容

下面就是在chrome瀏覽器控制檯打印的一個jquery對象,0屬性爲該jquery對象包裝的DOM對象,上述的125個方法以及jquery屬性放在_proto_對象中

m.fn.init(1)
	0: div#output
	context: document
	length: 1
	selector: "#output"
	__proto__: Object(0)

jQuery對象和js對象區別:

  1. jQuery對象屬於js的數組;
  2. jQuery對象是通過jQuery包裝的DOM對象後產生的;
  3. jQuery對象不能使用DOM對象的方法和屬性
  4. DOM對象不能使用jQuery對象的方法和屬性

jQuery對象和js對象之間的相互轉換:

  • js轉jQuery對象:$(js對象)
  • jQuery對象轉js對象:
    • var x = $("#output")[0];
    • 使用jQuery對象本身提供的get函數來返回指定集合位置的DOM對象
      var x = $("#output").get(0);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章