1. 每個函數function都有一個prototype,即顯式原型(屬性) 2. 每個實例對像都有一個__proto__,可稱為隱式原型(屬性) 3. 對像的隱式原型的值為其對應構造函數的顯式原型的值 4. 總結: -- 函數的prototype屬性:在定義函數時自動添加的,默認值是一個空Object實例對象 -- 物件的__proto__屬性:創建對像時自動添加的,默認值為構造函數的prototype屬性值 -- 程序員能直接操作顯式原型,但不能直接操作隱式原型(ES6之前)
1. 每個函數function都有一個prototype,即顯式原型(屬性) 2. 每個實例對像都有一個__proto__,可稱為隱式原型(屬性) 3. 對像的隱式原型的值為其對應構造函數的顯式原型的值 4. 總結: -- 函數的prototype屬性:在定義函數時自動添加的,默認值是一個空Object實例對象 -- 物件的__proto__屬性:創建對像時自動添加的,默認值為構造函數的prototype屬性值 -- 程序員能直接操作顯式原型,但不能直接操作隱式原型(ES6之前)
1. 函數的prototype屬性 -- 每個函數都有一個prototype屬性, 它默認指向一個Object空物件(即稱為: 原型物件) -- 原型對像中有一個屬性constructor, 它指向函數物件 2. 給原型對像添加屬性(一般都是方法) -- 作用: 函數的所有實例對像自動擁有原型中的屬性(方法) -- 原型上面的方法是給實例對象使用的
1. 函數的this是什麼? -- 任何函數本質上都是通過某個物件來調用的,如果沒有指定就是window -- 所有函數內部都有一個變量this -- this的值是調用函數的當前物件
1. 理解 -- 全稱: Immediately-Invoked Function Expression 匿名函數自調用 2. 作用 -- 隱藏實現 -- 不會污染全域的命名空間 -- 用來編寫js模塊
1. 什麼函數才是回調函數? (1)我定義的 (2)我沒有調 (3)最終它執行了(在某個時刻或某個條件下) 2. 常見的回調函數? -- DOM事件回調函數 ==> this:發生事件的DOM元素(用戶操作的元素) -- 定時器回調函數 ==> this:window -- ajax請求回調函數 -- 生命週期回調函數
1. 什麼是函數? -- 具有特定實現功能的n條語句封裝體 -- 只有函數是可以執行的,其他類型的數據不能執行 2. 為什麼要用函數? -- 提高code的重複使用率 -- 便於閱讀交流 3. 如何定義函數? -- 函數聲明 -- 表達式
1. 什麼是物件? -- 多個數據的封裝體 -- 用來保存多個數據的容器 -- 一個物件代表現實中的一個事物 2. 為什麼要用物件? -- 統一管理多個數據 3. 物件的組成? -- 屬性:屬性名(字串)+ 屬性值(任意類型)組成 -- 方法:一種特別的屬性,屬性值是函數
問題: var a = xxx, a記憶體中到底保存的是什麼? -- xxx是基本數據,保存的就是這個數據 -- XXX是物件,保存的物件的地址值 -- XXX是一個變數,保存的是xxx的記憶體內容,可能是基本數據,也可能是地址值
1. 什麼是數據? -- 儲存記憶體中,代表特定信息的「東西」,本質上是0101...二進制數據 -- 數據的特點:可傳遞、可運算 -- 一切皆數據 -- 記憶體中所有操作的目標:數據 ---- 算術運算 ---- 邏輯運算 ---- 賦值 ---- 運行函數
1. undefined與null的區別? (1)undefined:定義了未賦值 (2)null:定義並賦值,只是值為null 2. 什麼時候給變數賦值為null呢? (1)初始賦值:表明將要賦值為對象 (2)結束前賦值:讓對象成為垃圾對象,被垃圾回收器回收
1. 分類 (1)基本(值)類型 ---- String:任意字符串 ---- Number:任意數字,和整數、小數、正數、負數無關 ---- boolean:true、false ---- undefined:undefined ---- null:null