1. 程式人生 > >JS類型和類 小記錄

JS類型和類 小記錄

關於 proto parseint 數據 布爾值 clas 暫時 prototype ==

七種數據類型

number

記住二進制是0b開頭
八進制0開頭,後來ES5添加了0o開頭
十六進制是0x開頭

string

var s = 12345 +
        67890 // 無回車符號
或
var s = `12345
67890` // 含回車符號
或者ES6中可以用反引號:
var a = `123
456`
undefined
a
"123
456"

boolean

要麽是false要麽是true

symbol

暫時讓他消失在二次元

object

各種類型無序的組合在一起,比如:
var person 
= { name:"frank", age:"18", } 要記住,鍵一定是字符串,不管你加不加引號!!可以使用delete刪除 delete person[name]

null

undefined

都表示沒有值,但是知道以下就可以了:
1.如果一個變量沒有被賦值,name這個變量的值就是undefined。
2.如果你想表示一個還沒有被賦值的對象,就用null,如果你想表示一個還沒賦值的字符串、數字、布爾或者是symbol那就用undefined。

沒有function也沒有array,它們不是數據類型

可以用typeof來測試類型哦

技術分享圖片

註意function不是一個類型。

類型之間的轉換

任意類型轉字符串:

1.使用String

String(1)
"1"
String(true)
"true"
String(null)
"null"
String(undefined)
"undefined"
String({})
"[object Object]"

2.使用toString

技術分享圖片

3. x + ‘‘

技術分享圖片

任意類型轉數字

1.Number(x)

2. x - 0

3.+x

4.parseInt(x, 10)

5.parseFloat(x)

任意類型轉布爾值

1.Boolean(x)

2.!!x

對象

問題1:

var a = 1 和 var a = new Number(1)有什麽區別?

技術分享圖片

那麽為什麽第一個 var a = 1也可以使用 toString()?

因為在使用a.toString()的時候,會臨時創建一個對象,就像new一個1一樣。

見下題:

技術分享圖片

全局對象:

ECMAScript 規定全局對象叫做 global,但是瀏覽器把 window 作為全局對象(瀏覽器先存在的),window 就是一個哈希表,有很多屬性。

有兩種:

一種是ECMAScript規定的:

global.parseInt
global.parseFloat
global.Number
global.String
global.Boolean
global.Object

一種是瀏覽器自己加的屬性

window.alert    所以我們會簡單不同的瀏覽器的警示框都不同
window.prompt
window.comfirm
window.console.log
window.console.dir
window.document
window.document.createElement
window.document.getElementById

幾個重要的全局函數:

Number()

String()

Boolean()

Object()

關於原型就是共有屬性

所有對象都有 toString 和 valueOf 屬性,那麽我們是否有必要給每個對象一個 toString 和 valueOf 呢?

JS 的做法是把 toString 和 valueOf 放在一個對象裏(暫且叫做公用屬性組成的對象)

然後讓每一個對象的 __proto__ 存儲這個「公用屬性組成的對象」的地址。

技術分享圖片

Number如此,String也如此,其他也差不多。如果非要解釋原型鏈,看圖好了,連在一起像不像鏈子~

記住以下的重要公式:

var 對象 = new 函數()
對象.__proto__ === 函數.prototype

技術分享圖片

JS類型和類 小記錄