1. 程式人生 > >淺談對面向物件的理解(2)

淺談對面向物件的理解(2)

面向過程與面向物件的區別:

面向過程是一種直接的程式設計方法,它是按照程式語言的思路考慮問題。通過順序執行一組語句來實現一個功能,這些語句的執行過程就是整個程式。

面向物件是一種抽象度更高的程式設計方法。它的目標是使模組的抽象度更高,目的是可複用。面向物件三大特性:封裝,繼承,多型。

面向過程可以說是從細節方面思考問題

面向物件可以說是從巨集觀方面思考問題

物件的建立方式有物件字面工廠方式原型方式,建構函式混合模式

原型原型鏈

我們建立的每個函式都有一個prototype屬性,這個屬性是一個指標,指向一個物件,這個物件的用途是包含可以由特定型別的所有例項共享的屬性和方法。那麼,

prototype就是通過呼叫建構函式而建立的那個物件例項的原型物件。

使用原型的好處是可以讓物件例項共享它所包含的屬性和方法。也就是說,不必在建構函式中新增定義物件資訊,而是可以直接將這些資訊新增到原型中。使用建構函式的主要問題就是每個方法都要在每個例項中建立一遍。

JavaScript,一共有兩種型別的值,原始值和物件值。每個物件都有一個內部屬性 prototype ,我們通常稱之為原型。原型的值可以是一個物件,也可以是null。如果它的值是一個物件,則這個物件也一定有自己的原型。這樣就形成了一條線性的鏈,我們稱之為原型鏈。

簡單的說就是JavaScript 中,每當定義一個物件(函式)時候,物件中都會包含一些預定義的屬性。其中函式物件的一個屬性就是原型物件

prototypeJS在建立物件(不論是普通物件還是函式物件)的時候,都有一個叫做__proto__的內建屬性,用於指向建立它的函式物件的原型物件prototype我們把這個有__proto__串起來的直Object.prototype.__proto__null的鏈叫做原型鏈