1. 程式人生 > >JS(JavaScript)的進一步瞭解3(更新中···)

JS(JavaScript)的進一步瞭解3(更新中···)

 

資料的三種儲存方式

  1. String   “ ”
  2. Array    [ ]
  3. Json    { }

 

所有程式語言java c python c++ 等 他們都是面向物件程式設計,面向物件必須有三大特點,封裝,繼承,多型.

今天就是研究JS如何生成物件。

  1. 面向物件

Js一開始就是寫網頁特效,面向過程的,作者發現這樣寫不好,程式碼重複利用率太高,計算機記憶體消耗太大,網頁效能很差。

所以作者就收到javac的影響,往面向物件靠齊。Js天生有一個Object

,但他沒有面向物件的特徵(封裝,繼承,多型)。

最後研究出了建構函式。

建構函式最終目的是生成物件。

我們把封裝的那個函式叫

類裡面的屬性是私有的。

類原型上的屬性是公有的,可繼承的

  1)類身上天生自帶一個prototype的屬性,屬性是物件

  2)Prototype物件天生有一個constructor屬性,屬性值就是類本身

  3)例項天生有一個__proto__ 指向你自己類的原型

  

  原型鏈主要針對物件的屬性來說的

  作用域鏈主要針對變數來說的

  

  var aa的區別

   沒有帶var的變數就不能存放到記憶體地址中。就沒有變數提升這種說法了。相當於給

window加了一個屬性window.a

   帶var 可以存放在記憶體地址中,有變數提升,同時也相當於給window加了一個屬性window.a

 

 函式:

 

函式在呼叫的時候,會形成一個私有作用域,內部的變數不會被外面訪問,這種保護機制叫閉包。這就意味著函式呼叫完

畢,這個函式形成的棧記憶體會被銷燬。

但有時候我們不希望他被銷燬。

函式歸屬誰跟它在哪呼叫沒有關係,跟在哪定義有關。

Fn()呼叫完畢後得到的是一個匿名函式,但是這個函式在fn這個作用域下定義的,所以這個匿名函式內部的變數在fn作用域

下查詢。這種寫法可以使函式內部的變數不被銷燬。