問題1: OOP 指什么?有哪些特性
oop指的是面向?qū)ο缶幊蹋怯贸橄蟮姆绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程模式。它使用先前建立的范例,包括繼承、多態(tài)和封裝三大特性。今天流行的編程語言都支持面向?qū)ο缶幊?/p>
問題2: 如何通過構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)擁有屬性和方法的對(duì)象?
function Person(name,age){
this.name=name;
this.age=age;
this,sayName=function(){
alert(this.name+''+this.age);
}
}
var person=new Person('jack',18)
問題3: prototype 是什么?有什么特性
prototype指的是原型。每創(chuàng)建一個(gè)函數(shù),都會(huì)有一個(gè)prototype屬性,這個(gè)屬性是一個(gè)指針,用來指向函數(shù)的原型對(duì)象。prototype就是通過調(diào)用構(gòu)造函數(shù)而創(chuàng)建的那個(gè)對(duì)象實(shí)例的原型對(duì)象
特性:
- 原型對(duì)象上的所有屬性和方法,都能被派生對(duì)象共享
- 通過構(gòu)造函數(shù)生成實(shí)例對(duì)象時(shí),會(huì)自動(dòng)為實(shí)例對(duì)象分配原型對(duì)象。每一個(gè)構(gòu)造函數(shù)都有一個(gè)prototype屬性,這個(gè)屬性就是實(shí)例對(duì)象的原型對(duì)象。
- 原型對(duì)象的屬性不是實(shí)例對(duì)象自身的屬性。只要修改原型對(duì)象,變動(dòng)就立刻會(huì)體現(xiàn)在所有實(shí)例對(duì)象上。
- 如果實(shí)例對(duì)象自身就有某個(gè)屬性或方法,它就不會(huì)再去原型對(duì)象尋找這個(gè)屬性或方法。
問題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('前端');
image.png
問題5: 創(chuàng)建一個(gè) Car 對(duì)象,擁有屬性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(this.name+'is running')
},
stop: function(){
console.log(this.name+'stopped')
},
getStatus:function(){
console.log(this.name+'is'+this.status)
}
}
var car = new Car('奔馳','red','nice')
問題6: 創(chuàng)建一個(gè) GoTop 對(duì)象,當(dāng) new 一個(gè) GotTop 對(duì)象則會(huì)在頁面上創(chuàng)建一個(gè)回到頂部的元素,點(diǎn)擊頁面滾動(dòng)到頂部。擁有以下屬性和方法
http://js.jirengu.com/gomevadoru/1/edit?html,output
問題7: 使用木桶布局實(shí)現(xiàn)一個(gè)圖片墻
預(yù)覽地址:https://a625689014.github.io/barrel/barrel.html
代碼地址:https://github.com/a625689014/barrel