面向?qū)ο?/strong>就是把數(shù)據(jù)及對數(shù)據(jù)的操作方法放在一起,作為一個相互依存的整體--對象。對同類對象抽象出其共性拉鹃,形成類。類中的大多數(shù)數(shù)據(jù)鲫忍,只能用本類的方法進(jìn)行處理膏燕。類通過一個簡單的外部接口與外界發(fā)生關(guān)系,對象與對象之間通過消息進(jìn)行通信悟民。程序流程由用戶在使用中決定坝辫。
面向過程就是自頂向下順序執(zhí)行,逐步求精射亏,其程序結(jié)構(gòu)是按功能劃分為若干個基本模塊近忙,這些某塊形成一個樹狀結(jié)構(gòu);各模塊之間的聯(lián)系盡可能簡單智润,在功能上相對獨立及舍;每一個模塊內(nèi)部均由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成做鹰,其模塊化實現(xiàn)的具體方法是使用子程序击纬。程序流程在寫程序時就已決定鼎姐。
構(gòu)造函數(shù)與工廠函數(shù)的差異
1.工廠函數(shù)需要創(chuàng)建對象钾麸,以及必須有返回值
2.工廠函數(shù)針對的都是object的對象模型,而構(gòu)造函數(shù)可以匹配自定義的對象模型
3.構(gòu)造函數(shù)的弊端:如果在全局中定義相同的局部變量炕桨,容易造成全局污染饭尝,因為this.xx在局部獲取不到,就會去全局中獲取
4.構(gòu)造函數(shù)可以重寫献宫,可以在全局中添加新屬性和方法person.prototype={}钥平,但工廠函數(shù)只能在局部添加
原型
每個函數(shù)都有一個屬性叫做prototype,prototype是一個對象模型姊途,默認(rèn)的只有一個叫做constructor的屬性涉瘾,只想這個函數(shù)本身;每一個實例對象都有一個proto指針捷兰,指向構(gòu)造函數(shù)的prototype原型
原型對象的作用*
定義所有對象實例所共享的屬性和方法
繼承
特點:子類能夠繼承父類的所有屬性和方法
1.原型鏈繼承
訪問順序:當(dāng)訪問一個對象的屬性和方法時立叛,如果當(dāng)前對象擁有,那么直接調(diào)用贡茅,否則向他的父級找秘蛇,如果父級有其做,那么直接調(diào)用,否則繼續(xù)向上找赁还,直到找到object基類位置妖泄,入股最終沒找到返回undefined
確定原型與實例的關(guān)系
instanceOf:判斷一個實例對象是否是某個構(gòu)造函數(shù)的實例
isPrototype():只要原型鏈中出現(xiàn)過的原型,都可以說是原型鏈所派生的實例的原型艘策。
2.構(gòu)造函數(shù)繼承
call()和apply()
二者用途相同:用來調(diào)用函數(shù)蹈胡,傳入函數(shù)的參數(shù)用來改變函數(shù)中的this的指向
區(qū)別:第二個參數(shù)不同,apply第二個參數(shù)是數(shù)組
3.組合式繼承
使用原型鏈實現(xiàn)原型屬性和方法的繼承朋蔫,而通過借用構(gòu)造函數(shù)來實現(xiàn)對實例屬性的繼承审残。這樣既通過在原型上定義方法實現(xiàn)了函數(shù)調(diào)用,有保證每個實例都有他自己的屬性