11.1 js中級,資料型別、資料儲存方式、作用域記憶體空間的區別以及例識別。
一. 基本資料型別和引用資料型別的區別。
1.基本資料型別:基本資料型別就是簡單的操作值。
2.引用資料型別:就是把引用的地址賦給變數。
堆記憶體:
就是存放程式碼塊的,存放形式有兩種
1)物件以鍵值對的形式存放
2)引用資料型別的賦值,是把引用的地址賦給他,在修改屬性的時候,通過地址查詢然後修改。
引用資料型別如何操作?
先通過引用地址去查詢堆記憶體中的程式碼,然後再去修改
二. 資料儲存的方式:
1.string ···· " "
2.array ···· [ ]
3.json ···· { }
三.作用域和記憶體空間的區別:
作用域是函式在執行的時候產生的fn()
函式在執行的時候首先會開闢一個新的記憶體空間叫棧記憶體(環境或作用域)
資料型別在賦值的時候回開闢一個新的記憶體空間 叫堆記憶體(存放程式碼塊的)
相同點:二者都會形成一個記憶體地址
函式的封裝:
優勢可以批量生產,減少冗餘程式碼,提高程式碼的重複利用率(高密度低耦合),沒有繼承和多型
四.例識別:
建構函式中的屬性都是私有的,各個例項物件之間沒有私有屬性。為了例項物件擁有公共屬性,所以js使用prototype(原型)這個屬性,屬性值是一個物件,我們可以把公共的屬性放在prototype上。
原型分析:
1.每個函式資料型別(普通函式,類)都有一個prototype,並且這個屬性是一個物件屬性。
2.每個prototype上都有一個construction屬性,並且這個屬性值是當前函式或者類本身。
3.每個物件資料型別(例項,普通物件,prototype) 都天生具有一個__proto__的屬性值,他的屬性值是當前例項所屬類的原型。
原型鏈:
duixiang.shuxing的時候,首先這個屬性不是私有的,私有的就直接使用,如果私有的屬性沒有,就找共有的,共有的有就使用,沒有的就按照__proto__的類上有沒有,直到找到基類Object。如果Object沒有就undefined,這種查詢機制叫做原型鏈。