1.做用域前端
棧內存:js執行的環境(做用域)數據庫
堆內存:存放代碼的空間,存放方式一種鍵值對的形式存放,函數以字符串的形式存放json
2.js在執行以前,瀏覽器會給他一個全局做用域window,每一個做用域下分兩個模塊,一個是內存模塊,一個是執行模塊,內存模塊會給全部的變量一個內存地址,變量的聲明,在js中靠關鍵字var和function瀏覽器
js在執行以前瀏覽器會給他一個全局做用域叫window;在window下分兩個模塊,一個是內存,一個是執行,內存會找到全部的關鍵字var和function 對變量進行提早聲明(這種功能叫變量提高),給每一個變量分配內存地址,在執行模塊遇到變量首先會在本身的做用域下經過內存地址去查找這個變量是否存在,若是有直接操做,沒有向他的上一級做用域的內存模塊查找,若是有,就直接操做,沒有繼續向上查找,直到window,這種查找機制叫做用域鏈;函數
預解釋(變量提高)prototype
變量命名衝突?對象
若是普通變量和函數變量命名相同,最終只保留函數變量blog
3.=賦值運算內存
1.賦值運算,就是把後面的數據賦值給等號前面的變量作用域
後面的數據分兩種
1.後面的簡單的基本數據類型:number string Boolean null undefined直接就是將數據賦給前面的變量
2.若是後面的複合數據類型:array object function 將內存地址賦值給變量
4.object和json兩者的區別?
1.長的同樣 以鍵值對的形式書寫
可是object的鍵(key)能夠不加引號,可是json的鍵(key)必須加引號
object={name:"張三"}(能夠不加引號) 前臺的數據類型
json={"name","張三"}(必須加引號) 後臺存放數據格式
功能不同:
object是前端的數據類型;
json是數據庫存放的數據格式;
5.object對象
1.對象的定義:
1.字面量定義 var obj={name:"張三"}
2.類的實例 var obj=new Object()
obj.name="張三"
類:抽象東西:生成實例模型;
類的階梯;
自定義類的本質是函數
類和實例的關係
1.每一個類(函數)都有一個prototype的屬性,這個屬性是一個對象,裏面有一個constructor的屬性,屬性值就是這個類
2.每一個實列(對象)都有一個__proto__的屬性,這個屬性也是一個對象,它指向當前類的原型
prototype和__proto__?
兩者都叫原型
區別:
1.存放屬性的對象
2.__proto__是查找屬性的
prototype給開發者使用;
__proto__給瀏覽器使用