js面向对象与PHP面向对象总结
js面向?qū)ο?/span>:
1.什么是對(duì)象?
對(duì)象:任何實(shí)體都是對(duì)象,擁有屬性和方法兩大特征
屬性:描述事物的特點(diǎn);
方法:實(shí)物擁有的行為;
2.在JS里
Person.name="zhang"
Person.fn=function(){}
3.js中如何去生成對(duì)象?
(1)單例模式/字面量定義 var obj={name:"zhang"}
(2)var obj=new Object() 內(nèi)置類
Obj.name="zhang"
js內(nèi)置的類 string array object number boolean ?date function
(3)工廠模式
function create(){
var obj={}
Obj.name=
return obj;
}
(4)構(gòu)造函數(shù)
function Person(){
this.name="li"
}
var zhang=new Person()
4.this的問題
this是關(guān)鍵字,它是一個(gè)對(duì)象;
函數(shù)外 this指向window;
函數(shù)內(nèi)看帶不帶. 帶.就是.前面的對(duì)象,不帶.就是window
5.原型prototype
每個(gè)函數(shù) 類天生自帶一個(gè)prototype的屬性,這個(gè)屬性是個(gè)對(duì)象,它里面天生自帶一個(gè)constructor的屬性,屬性值是當(dāng)前函數(shù)/類本身;
每個(gè)實(shí)例對(duì)象 天生自帶一個(gè)__proto__的屬性,這個(gè)屬性是對(duì)象,它指向當(dāng)前實(shí)例對(duì)象的類的原型
6.類的繼承
對(duì)象復(fù)制
(1)通過for in 將父類的所有屬性變成子類的私有屬性
(2)Object.create() 將父類的屬性復(fù)制成子類公有的屬性
<1>原型繼承
將父類的實(shí)例賦值給子類的原型,父類實(shí)例的所有屬性成了子類的公有屬性
<2>call繼承 將父類私有的繼承為子類私有的
改變this指向的方法:
a.call()?
fn.call(div,)將fn中的this換成div然后再把fn調(diào)用;
b.apply()
c.bind()
d.提前聲明;
<3>冒充對(duì)象
冒充對(duì)象繼承利用for in ?將父類的所有屬性繼承為子類私有的
<4>混合繼承 call繼承和原型繼承結(jié)合
私有的繼承為私有的,私有的和公有的再次繼承為公有的
<5>組合繼承(寄生式繼承) ?call繼承和克隆的結(jié)合
? <6>中間類繼承 ?
偽數(shù)組
<7>拷貝繼承
淺拷貝
深拷貝
PHP面向?qū)ο?#xff1a;
1.類的創(chuàng)建 class創(chuàng)建類
2.對(duì)象的創(chuàng)建 ?使用new關(guān)鍵字;
3.成員的添加;
添加成員需要三個(gè)修飾符
public ?公開的,定義公共的屬性和方法,類的外部,類的內(nèi)部,子類都可以使用;
protected ?受保護(hù)的,定義受保護(hù)的屬性和方法 只能在類的內(nèi)部和子類里使用
private ?私有的,定義私有的屬性和方法,只能在自身的類里使用
方法成員如果前面不加修飾符,默認(rèn)是public;
4.成員調(diào)用使用->符號(hào);
使用成員屬性和方法的時(shí)候,屬性和方法前面不帶$符
5.特殊對(duì)象$this指向?qū)嵗膶?duì)象,如果類的方法里想使用類的其他屬性和方法得需要使用$this對(duì)象
6.構(gòu)造方法 function__construct() ?構(gòu)造函數(shù)在new實(shí)例化的時(shí)候系統(tǒng)會(huì)自動(dòng)調(diào)用
7.析構(gòu)方法
我們每次new實(shí)例化,系統(tǒng)就會(huì)給這個(gè)對(duì)象分配一個(gè)內(nèi)存空間,如果不銷毀,系統(tǒng)壓力會(huì)很大,系統(tǒng)有一個(gè)析構(gòu)方法 __destruct對(duì)象實(shí)例化之后系統(tǒng)會(huì)自動(dòng)調(diào)用。內(nèi)存銷毀的原則是先進(jìn)后銷。
?
8.成員賦值
9.php中的繼承使用關(guān)鍵字extends
10.類中常量 使用const關(guān)鍵字定義常量,常量在定義和使用的時(shí)候不能帶$符。
使用的時(shí)候不能用$this ?使用范圍修飾符 :: 前面還是這個(gè)類名或self
如果子類想訪問父類中的常量 使用parent::常量名
11.靜態(tài)變量 在變量前加上關(guān)鍵字 static 靜態(tài)屬性 不能使用->訪問了,使用類名::$變量名:
12.重載 覆蓋
子類繼承父類的方法時(shí),如果子類有和父類同名的方法,從父類那繼承的方法就會(huì)被覆蓋掉,這個(gè)就叫重載;
如果父類的方法前面加上final 則子類無法重載父類的方法,就會(huì)報(bào)錯(cuò)。
13.調(diào)用父類的構(gòu)造方法
php不會(huì)在子類的構(gòu)造方法中自動(dòng)的調(diào)用父類的構(gòu)造方法,要執(zhí)行父類的構(gòu)造方法,需要在子類的構(gòu)造方法在調(diào)用parent::__construct().
?
?
面向?qū)ο笕筇卣?/span>
封裝:對(duì)外只告訴你如何操作,內(nèi)部結(jié)構(gòu)不需要你知道。
對(duì)外只提供可操作的接口(方法),對(duì)內(nèi)的數(shù)據(jù)操作不可見
繼承:子類可以繼承父類的屬性和方法,但是有限繼承,public protected private 修飾的屬性可以繼承protected public 修飾的方法 子類可以繼承,父類的常量也可以繼承。
多態(tài):php沒有多態(tài),因?yàn)閜hp是弱類型語(yǔ)言,不會(huì)對(duì)變量提前進(jìn)行類型聲明,但是有重載;
重載:父類和子類 方法相同 子類會(huì)覆蓋父類的方法。js也有重載。
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yuanjingjing/p/10679389.html
總結(jié)
以上是生活随笔為你收集整理的js面向对象与PHP面向对象总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中win文件转为unix,如何
- 下一篇: php开发支付宝支付密码忘记了怎么办_密