javaScript 總共有兩種數據類型:java
基本數據類型(或者原始數據類型)按值傳遞:number string boolean undefined null symbol函數
複雜數據類型(或者引用數據類型)按引用傳遞:object spa
能夠使用 typeof 操做符簡單的檢測給定變量的數據類型:prototype
檢測數值(包括NaN,Infinity)返回 "number";對象
檢測字符串 返回 "string";繼承
檢測布爾值 返回 "boolean";ip
檢測一個變量未定義,或者未賦值 ,返回 "undefined";原型鏈
檢測一個對象或者null 返回 "object";字符串
檢測一個函數 返回 "function";get
檢測一個Symbol值 返回 "symbol" symbol 是ES6新增基本數據類型
Number 轉換爲數值 三種方法:Number(),parseInt(),parseFloat();
Number()方法,它會 「計算」 要轉換的數值,而且會忽略前導0,可是能夠轉換16進制數;
Number( ' ' ) // 0
Number( ' 12a ' ) // NaN
Number( ' true ' ) // NaN
Number( true ) // 1
parseInt()和parseFloat(),它們不會 「計算」 ;
parseInt() 不識別小數點,但能夠提供第二個參數:轉換是使用的基數,就是要解析的值是多少進制;能夠轉換8/16進制;
parseFloat() 只識別第一個小數點,會忽略前導0,只解析十進制數;
parseInt( ' ' ) 、parseFloat( ' ' ) // NaN
parseInt( ' 12a' ) // 十二、parseFloat( ' 12.1a' ) // 12.1
parseInt(true) 、parseFloat( true) // NaN
String 轉換爲字符串 String(),會調用 toString() 方法(若是有的話),null、undefined沒有toString方法,返回它們自己;
也能夠使用加號操做符(該值能夠進行加運算的話)與一個空字符串加一塊兒:值 + ' ';
Boolean 轉爲布爾值 Boolean() ,這六個值轉爲false:false、0、' '、NaN、null、undefined; 其它都轉爲true;
Undefined、Null 兩個特殊的類型,Number(null) // 0、 Number(undefined) // NaN
Object 對象的屬性以及方法:
prototype 原型對象,指向另外一個對象,本對象的屬性繼承自它的原型對象;
原型的獲取方法:標準方法 Object.getPrototypeOf(obj) 非標準 obj.__proto__
constructor 構造函數,它保存着用於建立當前對象的函數;
構造函數的原型的constructor屬性指向構造函數自己: Foo.prototype.constructor === Foo;
obj.hasOwnProperty(' 屬性名 '),判斷該屬性是否爲obj對象的自有屬性;
結合 in 操做符 能夠判斷該屬性是自有屬性仍是共有屬性;
A.prototype.isPrototypeOf(B),檢測一個對象(A.prototype)是否在另一個對象(B)的原型鏈上;
也就是說B對象是否繼承自A.prototype;
obj.propertyIsEnumerable(' 屬性名 ') 檢測對象obj的屬性是否能夠用 for-in 枚舉;
for-in 能夠遍歷自身以及繼承的可枚舉屬性; Object.keys( ) 只遍歷自身可枚舉屬性;
valueOf() 、toString()、toLocaleString() 返回對象的字符串表示;