OOP 指什么余佛?有哪些特性
Object-Oriented Programming:面向?qū)ο蟪绦蛟O計,是中具有對象概念的程序編程泛型恨憎,同時也是一種程序開發(fā)方法。
特性:
- 封裝:就是把客觀事務封裝成抽象的類憔恳,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作钥组,對不可信的進行隱藏
- 繼承:它可以使用現(xiàn)有類的所有功能,并且在無需重新編寫原來的類的情況下對這些功能進行擴展
- 多態(tài):允許將父對象設置成和一個或更多的他的子對象的技術(shù)程梦,賦值之后,父對象就可以根據(jù)當前賦值給它的子對象的特性以不同的方式運作愉粤。簡單的說拿撩,就是一句話:允許將子類類型的指針賦值給父類類型的指針。
如何通過構(gòu)造函數(shù)的方式創(chuàng)建一個擁有屬性和方法的對象?
function People(name, age){
this.name = name;
this.age = age;
}
People.prototype.say = function(){
console.log(this.name+this.age+'周歲')
}
var p1 = new People("饑人谷","3")
p1.say()
or
function People(name, age) {
this.name = name;
this.age = age;
}
People.prototype = {
say: function() {
console.log(this.name + this.age + "周歲")
}
}
var p1 = new People("饑人谷", "3")
p1.say();
在 p1 = new People()的時候內(nèi)部做了如下幾件事:
1:創(chuàng)建一個空對象压恒;
2:這個空對象的__proto__
指向Peopel.prototype;
3:執(zhí)行函數(shù)function People(name, age) { this.name = name; this.age = age; }
遇到this就認為這個this是剛才創(chuàng)建的對象型宙;
4:執(zhí)行p1,就給p1增加屬性伦吠,屬性的值就是name,age搁嗓,執(zhí)行完成之后returen出來
prototype 是什么箱靴?有什么特性?
prototype:是函數(shù)天生具有的屬性腺逛,該屬性是一個對象衡怀。這個對象具有兩個屬性,一個是constructor指的是函數(shù)本身够委,另一個是__proto__由原型對象創(chuàng)造怖现。
特性:當用new構(gòu)造一個對象時,就得到了該函數(shù)構(gòu)造函數(shù)的實例。實例繼承prototype的所有屬性和方法。
畫出如下代碼的原型圖
function People (name){
this.name = name;
this.sayName = function(){
console.log('my name is:' + this.name);
}
}
People.prototype.walk = function(){
console.log(this.name + ' is walking');
}
var p1 = new People('饑人谷');
var p2 = new People('前端');
創(chuàng)建一個 Car 對象,擁有屬性name讨韭、color、status狰闪;擁有方法run濒生,stop,getStatus
function Car(name, color, status) {
this.name = name;
this.color = color;
this.status = status;
}
Car.prototype = {
run: function() {
console.log('runing');
},
stop: function() {
console.log('stoped');
},
getStatus: function() {
console.log(this.status);
}
};
var car1 = new Car('zy', 'black', '0');
car1.run();
car1.stop();
car1.getStatus();