對象屬性訪問及引號問題
- 對象屬性名可以加引號也可以不加引號,
- 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對象區別:
- jQuery對象屬於js的數組;
- jQuery對象是通過jQuery包裝的DOM對象後產生的;
- jQuery對象不能使用DOM對象的方法和屬性
- DOM對象不能使用jQuery對象的方法和屬性
jQuery對象和js對象之間的相互轉換:
- js轉jQuery對象:
$(js對象)
- jQuery對象轉js對象:
var x = $("#output")[0];
- 使用jQuery對象本身提供的get函數來返回指定集合位置的DOM對象
var x = $("#output").get(0);