面向物件---1月2日課堂隨筆
1.作用域:
棧記憶體 js 執行的環境(作用域)
堆記憶體:存放程式碼塊的空間 存放方式 鍵值對的形式存 字串的形式存
js程式碼在執行之前,瀏覽器會給他一個全域性作用域叫window,每個作用域下分兩個模組,一個是記憶體模組,一個是執行模組。記憶體模組會給所有的變數一個記憶體地址。變數的宣告在js中靠關鍵字var 和function。
2.什麼時候會有作用域的形成?
瀏覽器天生有一個全域性的叫window
函式執行的時候會形成一個私有的
Js在執行之前,瀏覽器會給他一個全域性作用域叫window,在window下分兩個模組,一個是記憶體,一個是執行,記憶體會找到所有的關鍵字var和function 對變數進行提前宣告(這個功能叫變數提升)給每個變數分配一個記憶體地址。在執行模組遇到變數首先會在自己的作用域下通過記憶體地址去查詢這個變數是否存在,如果有就直接操作,沒有就向他的上一級作用域的記憶體模組查詢,如果有就操作,沒有就繼續向上查詢,直到window。這種查詢機制叫作用域鏈。
變數命名衝突
如果普通變數和函式變數命名相同,最後保留函式變數。
3.=賦值運算
1.賦值運算,就是把後面的資料賦值給等號前面的變數,
後面的資料分兩種情況
(1)後面是簡單的基本資料型別 number string boolean null undefined 直接就是將資料賦給前面的變數。
(2)後面的如果是複合資料型別 array object function 將記憶體地址賦給前面的變數
4.object和json二者
1.長的一樣,都以鍵值對的形式書寫,object的key可以不加引導,但是json必須加
2.object是前端的資料型別,json是資料存放的資料格式。
5.object物件
(1)物件的定義
字面量定義
字面量定義 var obj={name:“張三”}
類的例項 var obj=new Object() obj.name="張三";
類的本質是函式(function)
類和例項的關係
1.每個類(函式)都有一個prototype的屬性,這個屬性是一個物件,裡面有一個constructor的屬性,屬性值是這個類本身。
2.每個例項(物件)都有一個__proto__的屬性,這個屬性也是一個物件,它指向當前類的原型。
3.prototype和__proto__二者都叫原型,前者是存放屬性的物件,後者是查詢屬性的,前者給開發者使用,後者給瀏覽器使用。