好程式設計師web前端培訓分享詳解JavaScript學習筆記建構函式
好程式設計師web前端培訓分享詳解JavaScript學習筆記建構函式 , 物件導向 :
· 首先,我們要明確,物件導向不是語法,是一個思想,是一種 程式設計模式。
· 面向: 面(臉),向(朝著)
· 程式導向: 臉朝著過程 =》 關注著過程的程式設計模式
· 物件導向: 臉朝著物件 =》 關注著物件的程式設計模式
· 實現一個效果
· 在程式導向的時候,我們要關注每一個元素,每一個元素之間的關係,順序,。。。
· 在程式導向的時候,我們要關注的就是找到一個物件來幫我做這個事情,我等待結果
· 例子 : 我要吃麵條
· 程式導向
· 用多少麵粉
· 用多少水
· 怎麼和麵
· 怎麼切面條
· 做開水
· 煮麵
· 吃麵
· 物件導向
· 找到一個麵館
· 叫一碗麵
· 等著吃
· 物件導向就是對程式導向的封裝
· 我們以前的程式設計思想是,每一個功能,都按照需求一步一步的逐步完成
· 我們以後的程式設計思想是,每一個功能,都先創造一個 麵館 ,這個 麵館 能幫我們作出一個 面(完成這個功能的物件) ,然後用 麵館 創造出一個 面 ,我們只要等到結果就好了
建立物件的方式
· 因為物件導向就是一個找到物件的過程
· 所以我們先要了解如何建立一個物件
呼叫系統內建的建構函式建立物件
· js 給我們內建了一個 Object 建構函式
· 這個 建構函式 就是用來創造物件的
· 當 建構函式 和 new 關鍵字連用的時候,就可以為我們創造出一個物件
· 因為 js 是一個動態的語言,那麼我們就可以動態的向物件中新增成員了
// 就能得到一個空物件 var o1 = new Object () // 正常操作物件 o1.name = 'Jack' o1.age = 18 o1.gender = '男'
字面量的方式建立一個物件
· 直接使用字面量的形式,也就是直接寫 {}
· 可以在寫的時候就新增好成員,也可以動態的新增
// 字面量方式建立物件 var o1 = {
name : 'Jack' ,
age : 18 ,
gender : '男' } // 再來一個 var o2 = {}o2.name = 'Rose' o2.age = 20 o2.gender = '女'
使用工廠函式的方式建立物件
· 先書寫一個工廠函式
· 這個工廠函式里面可以創造出一個物件,並且給物件新增一些屬性,還能把物件返回
· 使用這個工廠函式創造物件
// 1. 先建立一個工廠函式 function createObj() {
// 手動建立一個物件 var obj = new Object ()
// 手動的向物件中新增成員 obj.name = 'Jack'
obj.age = 18
obj.gender = '男'
// 手動返回一個物件 return obj}
// 2. 使用這個工廠函式建立物件 var o1 = createObj() var o2 = createObj()
使用自定義建構函式建立物件
· 工廠函式需要經歷三個步驟
· 手動建立物件
· 手動新增成員
· 手動返回物件
· 建構函式會比工廠函式簡單一下
· 自動建立物件
· 手動新增成員
· 自動返回物件
· 先書寫一個建構函式
· 在建構函式內向物件新增一些成員
· 使用這個建構函式創造一個物件(和 new 連用)
· 建構函式可以建立物件,並且建立一個帶有屬性和方法的物件
· 物件導向就是要想辦法找到一個有屬性和方法的物件
· 物件導向就是我們自己製造 建構函式 的過程
// 1. 先創造一個建構函式 function Person(name, gender) {
this .age = 18
this .name = name
this .gender = gender} // 2. 使用建構函式建立物件 var p1 = new Person( 'Jack' , 'man' ) var p2 = new Person( 'Rose' , 'woman' )
建構函式詳解
· 我們瞭解了物件的建立方式
· 我們的物件導向就是要麼能直接得到一個物件
· 要麼就弄出一個能創造物件的東西,我們自己創造物件
· 我們的建構函式就能創造物件,所以接下來我們就詳細聊聊 建構函式
建構函式的基本使用
· 和普通函式一樣,只不過 呼叫的時候要和 new 連用 ,不然就是一個普通函式呼叫
function Person() {} var o1 = new Person() // 能得到一個空物件 var o2 = Person() // 什麼也得不到,這個就是普通函式呼叫
· 注意: 不寫 new 的時候就是普通函式呼叫,沒有創造物件的能力
· 首字母大寫
function person() {} var o1 = new person() // 能得到一個物件 function Person() {} var o2 = new Person() // 能得到一個物件
· 注意: 首字母不大寫,只要和 new 連用,就有創造物件的能力
· 當呼叫的時候如果不需要傳遞引數可以不寫 () ,建議都寫上
function Person() {} var o1 = new Person() // 能得到一個空物件 var o2 = new Person // 能得到一個空物件
· 注意: 如果不需要傳遞引數,那麼可以不寫 (),如果傳遞引數就必須寫
· 建構函式內部的 this,由於和 new 連用的關係,是指向當前例項物件的
function Person() {
console.log( this )} var o1 = new Person() // 本次呼叫的時候,this => o1 var o2 = new Person() // 本次呼叫的時候,this => o2
· 注意: 每次 new 的時候,函式內部的 this 都是指向當前這次的例項化物件
· 因為建構函式會自動返回一個物件,所以建構函式內部不要寫 return
· 你如果 return 一個基本資料型別,那麼寫了沒有意義
· 如果你 return 一個引用資料型別,那麼建構函式本身的意義就沒有了
使用建構函式建立一個物件
· 我們在使用建構函式的時候,可以透過一些程式碼和內容來向當前的物件中新增一些內容
function Person() {
this .name = 'Jack'
this .age = 18 }
var o1 = new Person() var o2 = new Person()
· 我們得到的兩個物件裡面都有自己的成員 name 和 age
· 我們在寫建構函式的時候,是不是也可以新增一些方法進去呢?
function Person() {
this .name = 'Jack'
this .age = 18
this .sayHi = function () {
console.log( 'hello constructor' )
}}
var o1 = new Person() var o2 = new Person()
· 顯然是可以的,我們的到的兩個物件中都有 sayHi 這個函式
· 也都可以正常呼叫
· 但是這樣好不好呢?缺點在哪裡?
function Person() {
this .name = 'Jack'
this .age = 18
this .sayHi = function () {
console.log( 'hello constructor' )
}}
// 第一次 new 的時候, Person 這個函式要執行一遍// 執行一遍就會創造一個新的函式,並且把函式地址賦值給 this.sayHi var o1 = new Person()
// 第二次 new 的時候, Person 這個函式要執行一遍// 執行一遍就會創造一個新的函式,並且把函式地址賦值給 this.sayHi var o2 = new Person()
· 這樣的話,那麼我們兩個物件內的 sayHi 函式就是一個程式碼一摸一樣,功能一摸一樣
· 但是是兩個空間函式,佔用兩個記憶體空間
· 也就是說 o1.sayHi 是一個地址, o2.sayHi 是一個地址
· 所以我們執行 console.log(o1 === o2.sayHi) 的到的結果是 false
· 缺點: 一摸一樣的函式出現了兩次,佔用了兩個空間地址
· 怎麼解決這個問題呢?
· 就需要用到一個東西,叫做 原型
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2690360/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師web前端培訓分享JavaScript學習筆記函式進階程式設計師Web前端JavaScript筆記函式
- 好程式設計師web前端培訓分享JavaScript學習筆記分支結構程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記Promise程式設計師Web前端JavaScript筆記Promise
- 好程式設計師web前端培訓分享JavaScript學習筆記SASS程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記cookie程式設計師Web前端JavaScript筆記Cookie
- 好程式設計師web前端培訓分享學習JavaScript程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript學習筆記之設計模式程式設計師Web前端JavaScript筆記設計模式
- 好程式設計師web前端培訓分享node學習筆記程式設計師Web前端筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之迴圈結構程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓JavaScript學習筆記DOM程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓JavaScript學習筆記--jQuery程式設計師Web前端JavaScript筆記jQuery
- 好程式設計師web前端培訓分享JavaScript學習筆記之陣列程式設計師Web前端JavaScript筆記陣列
- 好程式設計師web前端培訓分享JavaScript學習筆記之正則程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習指南程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享HTMLCSS學習筆記BFC程式設計師Web前端HTMLCSS筆記
- 好程式設計師web前端培訓分享React學習筆記(一)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(二)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(三)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之ES5程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記閉包與繼承程式設計師Web前端JavaScript筆記繼承
- 好程式設計師web前端培訓分享JavaScript學習筆記ajax及ajax封裝程式設計師Web前端JavaScript筆記封裝
- 好程式設計師web前端培訓分享JavaScript學習筆陣列的排序程式設計師Web前端JavaScript陣列排序
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓分享之uni-app學習筆記uni-app詳解程式設計師Web前端APP筆記
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓分享JavaScript框架J程式設計師Web前端JavaScript框架
- 好程式設計師web前端培訓分享node學習筆記系列之四十一程式設計師Web前端筆記
- 好程式設計師web前端培訓分享之HTMLCSS學習筆記css3-多列程式設計師Web前端HTMLCSS筆記S3
- 好程式設計師web前端培訓分享HTMLCSS學習筆記css3選擇器程式設計師Web前端HTMLCSS筆記S3
- 好程式設計師web前端培訓分享怎樣學好css?程式設計師Web前端CSS
- 好程式設計師web前端培訓分享九個JavaScript小技巧程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript基礎語法程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript相關知識程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享Javascript中原型屬性程式設計師Web前端JavaScript原型
- 好程式設計師web前端培訓分享之HTMLCSS學習筆記媒體查詢+ rem用法程式設計師Web前端HTMLCSS筆記REM
- 好程式設計師web前端培訓分享HTMLCSS學習之CSS基礎程式設計師Web前端HTMLCSS
- 好程式設計師web前端培訓分享CSS基礎知識學習程式設計師Web前端CSS
- 好程式設計師web前端分享Vue學習筆記(一)程式設計師Web前端Vue筆記