prototype是一個公共容器调限,節(jié)省空間
問題1: OOP 指什么?有哪些特性
面向?qū)ο缶幊坛馨琌bject Oriented Programming,OOP
面向?qū)ο缶褪前压械膶傩苑庋b起來宦赠,然后批量生產(chǎn)勾扭。封裝起來的就是類妙色,然后批量生產(chǎn)的就是對象慧耍。
特性:
封裝: 把共用的屬性放在一起芍碧。然后留出接口。使用者定庵,只需要調(diào)用和傳參蔬浙,不需要知道內(nèi)部的實現(xiàn)原理贞远。
繼承: 子類可以繼承父類,子類可以在繼承后俱病,重寫父類的方法和變量袱结。這樣可以提高代碼的重用性擎勘。
多態(tài): 子類繼承父類方法和變量后颖榜,可以重寫煤裙。
問題2: 如何通過構(gòu)造函數(shù)的方式創(chuàng)建一個擁有屬性和方法的對象?
function creatObj(nick, age){
this.nick = nick;
this.age = age;
this.sayName = function(){
console.log(this.nick);
}
}
var p1 = new creatObj('jay', 24);
問題3: prototype 是什么硼砰?有什么特性
每個函數(shù)就是一個對象(Function)题翰,函數(shù)對象都有一個子對象 prototype對象豹障,類是以函數(shù)的形式來定義的血公。prototype表示該函數(shù)的原型累魔,也表示一個類的成員的集合垦写。
prototype相當(dāng)于是一個公共容器彰触,供所有實例訪問,節(jié)省空間渴析。當(dāng)實例對象本身沒有某個屬性或方法的時候晚伙,它會到構(gòu)造函數(shù)的 prototype 屬性 指向的對象,去尋找該屬性或方法俭茧。如果實例對象自身就有某個屬性或方法咆疗,它就不會再去原型對象尋找這個屬性或方法。
問題4:畫出如下代碼的原型圖
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('前端');
問題5: 創(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('running');
}
Car.prototype.stop = function(){
console.log('stop');
}
Car.prototype.getStatus = function(){
console.log(this.status);
}
var Obj = new Car('yui', red, 0);
Obj.run();
Obj.stop();
Obj.getStatus();
問題6: 創(chuàng)建一個 GoTop 對象衙熔,當(dāng) new 一個 GotTop 對象則會在頁面上創(chuàng)建一個回到頂部的元素登颓,點擊頁面滾動到頂部。擁有以下屬性和方法
-
ct
屬性框咙,GoTop 對應(yīng)的 DOM 元素的容器 -
target
屬性, GoTop 對應(yīng)的 DOM 元素 -
bindEvent
方法腔丧, 用于綁定事件
4createNode
方法, 用于在容器內(nèi)創(chuàng)建節(jié)點
http://js.jirengu.com/jaxijovaze/6/edit
問題7: 使用木桶布局實現(xiàn)一個圖片墻
demo
http://js.jirengu.com/kibuyibewa/3/edit