繼承 閉包 cookie和session

2021-08-07 15:06:48 字數 1308 閱讀 6608

一、物件、prototype屬性、繼承

1、建立了乙個新的物件之後,就會建立乙個prototype屬性

2、這個屬性指向函式的原型物件

3、物件會自動獲得乙個constructor屬性

4、constructor

5、原型模式:每個函式都有乙個prototype屬性

6、原型鏈:利用原型讓乙個引用型別繼承另乙個型別的屬性和方法。是實現繼承的主要方法。在子級中例項化父級的物件(subtype.prototype = new supertype())。

a)缺點:所有的例項都共享父級的屬性,修改其中乙個就會修改全部

b)在建立子物件例項的時候,不能像超型別建構函式傳遞引數。

7、繼承:很少會單獨使用原型鏈。於是出現了一下幾類:

a)借用建構函式(有時候也叫偽造物件或者經典繼承):在子類建構函式的內部呼叫超型別的建構函式。

b)組合繼承(也叫偽經典繼承、最常用的繼承方式):將原型鏈和借用建構函式技術組合到一塊。使用原型鏈實現對原型屬性和方法的繼承;而通過借用建構函式實現對例項屬性的繼承。

優點:結合原型鏈和借用建構函式的優勢:1、借用建構函式中傳入了引數,所以構造的是不同的超型別物件,在子物件中互不影響。2、原型鏈,可以使用超型別的屬性和方法。

c)原型式繼承

d)寄生式繼承

e)寄生組合式繼承

二、作用域鏈

在建立函式時,會建立乙個預先包含全域性變數的作用域鏈,這個作用域鏈被儲存在內部的scope屬性中;當呼叫函式時,會為函式建立乙個執行環境,然後通過複製函式的scope屬性中物件構建起執行環境的作用域鏈。此後,活動物件被建立並被推入執行環境作用域鏈的前端。於是作用域鏈中包含兩個變數物件:本地活動物件和全域性變數物件。

三、閉包

有權訪問另乙個函式作用域中的變數的函式。建立閉包的常見方式:在乙個函式內部建立另乙個函式。在外部函式執行完畢後,其活動物件不會被銷毀,因為匿名函式的作用域鏈仍在引用這個活動物件。也就是說:外部函式作用域鏈會被銷毀,但它的活動物件不會被銷毀,直到內部函式被銷毀後,外部函式的活動物件才會被銷毀。

注意的問題:

1、閉包與變數。(for var i=0;i//the windows

var name = 『the windows』;

var object = }}

alert(object.getnamefunc()())

//my object

四、cookie和session

並不是所有的網頁請求都會有cookie和session,對於使用者來說,只有與使用者個人資訊相關的才會有cookie和session來儲存資料。訪問其他的公共資源不需要cookie和session的。

閉包和繼承

開闢乙個儲存空間把函式體內的 一模一樣的放在這個空間內 不解析變數 把儲存空間的位址給函式名 按照函式名的位址找到函式的儲存空間形參賦值 預解析將函式儲存空間中的 拿出來執行 才解析變數 按照函式名的位址找到函式的儲存空間 形參賦值 預解析在記憶體中開闢乙個執行空間 將函式儲存空間中的 拿出來在剛剛...

閉包和繼承

function fn var fun fn fun fun 1.延長的變數的宣告週期 2.保護了私有的變數 3.函式的作用域一直沒有被銷毀 缺點 容易造成記憶體的溢位 function father function son var f new father son.prototype f var...

JS 繼承和閉包

一 原型鏈進行繼承 1.js的繼承主要依靠原型鏈來實現,使函式的原型指向另一函式的例項,依次來完成繼承,其實質就是重寫原型物件。繼承後屬性和方法的依照原型鏈進行搜尋,1 先在例項中搜尋,2 搜尋subtype.prototype,3 搜尋supertype.prototype,直到找到該方法或者該屬...