面向對象(1)前端
1.做用域:數據庫
棧內存js執行的環境(做用域)json
堆內存:存放代碼的空間 存放方式有兩種,一種是以鍵值對的形式存放,另外一種是以字符串的形式存瀏覽器
js代碼在執行前,瀏覽器會給它一個全局做用域叫window,每一個做用域下分兩個模塊,一個是內存模塊,一個是執行模塊。內存模塊會給全部的變量一個內存地址。變量的聲明在js中靠關鍵字var和function函數
2.何時會有做用域的造成?spa
瀏覽器天生有一個全局的叫window;prototype
函數執行的時候會造成一個私有的。3d
js在執行以前,瀏覽器會給它一個全局做用域叫window,在window下分兩個模塊,一個是內存,一個是執行,內存會找到全部的關鍵字var和function,對變量進行提早聲明(這個功能叫變量提高) 給每一個變量分配一個內存地址。在執行模塊遇到變量首先會在本身的做用域下經過內存地址去查找這個變量是否存在,若是有就直接操做,沒有就繼續向上查找,知道window。這種查找機制叫做用域鏈對象
變量命名衝突:若是普通變量和函數變量命名相同,最後保留函數變量。blog
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_
兩者都叫原型,前者是存放屬性的對象,後者是查找屬性的,前者給開發者使用,後者給瀏覽器使用。