在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 類型系統(tǒng)
書單
JavaScript 動畫
HTML
CSS Reset
屬性操作
DOM 事件
閉包
Photoshop
Atom 文本編輯器
表單操作
布局解決方案
類型系統(tǒng)
開發(fā)實踐
數(shù)據(jù)通信
變量作用域
BOM
JavaScript 程序設(shè)計
前端工程師概述
CSS
響應(yīng)式布局
表達(dá)式與運算符
基本語法
JavaScript 介紹
版本控制
布局
調(diào)試器
背景
圖片保存
多媒體
文檔樹
列表操作
Sublime 編輯器
盒模型
常見布局樣例
類型識別
變形
數(shù)據(jù)存儲
選擇器
頁面架構(gòu)
開發(fā)及調(diào)試工具
頁面模塊化
節(jié)點操作
測量及取色
瀏覽器兼容
HTML 簡介
內(nèi)置對象
實體字符
產(chǎn)品前端架構(gòu)
協(xié)作流程
切圖
工具, 面板, 視圖
正則表達(dá)式
動畫
語句
面向?qū)ο?/span>
HTML 語法
HTML 標(biāo)簽
技術(shù)選擇
樣式操作
圖片優(yōu)化與合并
語法
DOM 編程藝術(shù)
Canvas
接口設(shè)計
頁面優(yōu)化
文本

類型系統(tǒng)

類型系統(tǒng)

javascript 類型系統(tǒng)可以分為標(biāo)準(zhǔn)類型和對象類型,進(jìn)一步標(biāo)準(zhǔn)類型又可以分為原始類型和引用類型,而對象類型又可以分為內(nèi)置對象類型、普通對象類型、自定義對象類型。

http://wiki.jikexueyuan.com/project/fend_note/images/J/javascript-variable-type.jpg" alt="" />

標(biāo)準(zhǔn)類型

標(biāo)準(zhǔn)類型共包括了6個分別是:

原始類型(值類型)

  • Undefined undefined
  • Null null
  • Boolean true
  • String 'hello'
  • Number 123

引用類型(對象類型)

  • Object
var obj = {};
<!-- 原始類型變量的包裝類型如下 -->
var bool = new Boolean(true);
var str = new String("hello");
var num = new Number(1);
var obj0 = new Object();

原始類型和引用類型的區(qū)別:

原始類型儲存在棧(Stack)中儲存變量的值,而引用類型在棧中保存的是所引用內(nèi)容儲存在堆(Heap)中的值。類似于指針的概念,引用類型并非儲存變量真實數(shù)值而是地址,所以對已引用類型的復(fù)制其實只是復(fù)制了相同的地址而非實際的變量值。

Undefined 值:undefined 出現(xiàn)場景:

  • 以聲明為賦值的變量 var obj;
  • 獲取對象不存在的屬性 var obj = {x: 0}; obj.y;
  • 無返回值函數(shù)的執(zhí)行結(jié)果 function f(){}; var obj = f();
  • 函數(shù)參數(shù)沒有傳入 function f(i){console.log(i)}; f();
  • void(expression)

Null 值:null 出現(xiàn)場景:

  • 獲取不存在的對象 document.getElementById('not-exist-element')

Boolean 值:true, false 出現(xiàn)場景:

  • 條件語句導(dǎo)致的系統(tǒng)執(zhí)行的隱式類型轉(zhuǎn)換 if(隱式轉(zhuǎn)換){}
  • 字面量或變量定義 var bool = true;

String 值:字符串 出現(xiàn)場景:

  • var str = 'Hello, world!';

Number 值:整型直接量,八進(jìn)制直接量(0-),十六進(jìn)制直接量(0x-),浮點型直接量 出現(xiàn)場景:

  • 1026
  • 3.14
  • 1.2e5
  • 0x10

Object 值:屬性集合 出現(xiàn)場景:

  • var obj = {name: 'Xinyang'};

變量轉(zhuǎn)換表

Value Boolean Number String
undefined false NaN "undefined"
null false 0 "null"
true true 1 "true"
false false 0 "false"
'' false 0 ''
'123' true 123 '123'
'1a' true NaN '1a'
0 false 0 "0"
1 true 1 "1"
Infinity true Infinity "Infinity"
NaN false NaN 'NaN'
{} true NaN "[object Object]"

類型識別

  • typeof
  • Object.prototype.toString
  • constructor
  • instanceof

typeof

  • 可以是標(biāo)準(zhǔn)類型(Null 除外)
  • 不可識別具體的對象類型(Function 除外)

Object.prototype.toString

  • 可是識別標(biāo)準(zhǔn)類型及內(nèi)置對象類型(例如,Object, Date, Array)
  • 不能識別自定義對象類型

constructor

  • 可以識別標(biāo)準(zhǔn)類型(Undefined/Null 除外)
  • 可識別內(nèi)置對象類型
  • 可識別自定義對象類型
function getConstructiorName(obj) {
  return obj && obj.constructor && obj.constructor.toString().match(/function\s*([^(]*)/)[1];
}
getConstructiorName([]) === "Array"; // true

instanceof

  • 不可判別原始類型
  • 可判別內(nèi)置對象類型
  • 可判別自定義對象類型