高階1-物件、原型
1. OOP 指什麼?有哪些特性?
OOP指(Object Oriented Programming,物件導向程式設計),物件導向程式設計(OOP)是一種基於“物件”概念的程式設計正規化,它可以以欄位的形式包含資料,通常稱為屬性;以程式的形式,包含程式碼,通常稱為方法。
物件導向有兩個基本概念:
類:類(Class)定義了一件事物的抽象特點;它定義了一些特點(屬性 property)和行為(方法 method);類是物件的型別模板。
例項:例項是根據類建立的物件;可以說類的例項是物件,類實際上就是一種資料型別;物件是類的具體化。
物件導向有三大特徵:
封裝:封裝將變數和方法封裝在一個類中,定義程式如何引用物件的資料,可以對成員變數進行隱藏,控制使用者對類的修改和訪問資料。外部對類成員的訪問都通過方法進行,能夠保護類成員不被非法修改。封裝利於模組化和資訊隱藏。
繼承:如果類別A繼承自類別B,那麼把A稱為B的子類,把B稱為A的父類;子類擁有具有父類別的各種屬性和方法,子類繼承父類的同時,可以重新定義某些屬性或方法,即覆蓋父類別的原有屬性和方法。也可為子類追加新的屬性和方法
多型: 多型指同一個實體同時具有多種形式,即介面有多種不同的實現方式,允許將子類型別的指標賦值給父類型別的指標
2.如何通過建構函式的方式建立一個擁有屬性和方法的物件?
使用new的方法,一個函式使用new呼叫的時候就是建構函式
new 運算子接受一個函式 F 及其引數:new F(arguments...)。這一過程分為三步:
- 建立類的例項。這步是把一個空的物件的 proto 屬性設定為 F.prototype 。
- 初始化例項。函式 F 被傳入引數並呼叫,關鍵字 this 被設定為該例項。
- 返回例項
舉例:
function Person(nick, age){
this.nick = nick;
this.age = age;
this.sayName = function(){
console.log(this.nick);
}
}
var p1 = new Person('Byron', 25);
p1.nick
"Byron"
p1.age
25
p1.sayName()
VM282:5 Byron
3.prototype 是什麼?有什麼特性?
prototype是函式物件的一種屬性,在函式宣告後,函式自動獲取,指向函式的原型物件;
當用這個函式作為建構函式建立物件時,物件例項的proto屬性指向其建構函式的prototype屬性;
因此建構函式的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('前端');
[圖片上傳失敗...(image-560399-1531072378397)]
5.建立一個 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('Car is running');
}
Car.prototype.stop = function () {
console.log('Car is stopped');
}
Car.prototype.getStatus = function () {
console.log('Car status: ' + this.status);
}
var car1 = new Car(Bently, white, new);
6.建立一個 GoTop 物件,當 new 一個 GotTop 物件則會在頁面上建立一個回到頂部的元素,點選頁面滾動到頂部。擁有以下屬性和方法
1. `ct`屬性,GoTop 對應的 DOM 元素的容器
2. `target`屬性, GoTop 對應的 DOM 元素
3. `bindEvent` 方法, 用於繫結事件
4 `createNode` 方法, 用於在容器內建立節點
7.使用木桶佈局實現一個圖片牆
相關文章
- JS進階(一)(物件導向、原型)JS物件原型
- JS進階(2):人人都能懂的原型物件JS原型物件
- 原型物件與原型鏈原型物件
- js基礎--原型物件與原型物件鏈JS原型物件
- 函式物件、物件、原型函式物件原型
- 物件獲取原型物件物件原型
- 理解js中的原型,原型物件,原型鏈JS原型物件
- JavaScript 物件 & 原型JavaScript物件原型
- JS筆記—— 物件 (原型物件)JS筆記物件原型
- 前端基礎進階(9):詳解物件導向、建構函式、原型與原型鏈前端物件函式原型
- Java高階教程 - 建立和銷燬物件Java物件
- C++ 物件導向高階設計C++物件
- JAVA物件導向高階一:繼承Java物件繼承
- 深入理解原型物件和原型鏈原型物件
- 由物件到原型物件原型
- 物件-原型-繼承物件原型繼承
- JS的物件原型JS物件原型
- 前端進階(二)JS高階講解物件導向,原型,繼承,閉包,正規表示式,讓你徹底愛上前端前端JS物件原型繼承
- JS的物件導向(理解物件,原型,原型鏈,繼承,類)JS物件原型繼承
- js高階 物件導向 學習筆記JS物件筆記
- es6 class進階【一個將class轉原型物件的例子】原型物件
- JavaScript之物件和原型JavaScript物件原型
- JS中的原型物件JS原型物件
- 說說JS中的原型物件和原型鏈JS原型物件
- 三張圖搞懂JavaScript的原型物件與原型鏈JavaScript原型物件
- JAVA(一)JAVA基礎/物件導向基礎/高階物件導向Java物件
- PHP物件導向深入研究之【高階特性】PHP物件
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- JS建構函式,原型鏈,原型物件總結JS函式原型物件
- 淺談JS物件的建立、原型、原型鏈繼承JS物件原型繼承
- JS核心系列:淺談 原型物件和原型鏈JS原型物件
- 【C#進階】高階物件導向特性_2024-06-22C#物件
- 從零開始學 Web 之 JavaScript 高階(一)原型,貪吃蛇案WebJavaScript原型
- ECMAScript 5.1 物件(Object)與原型物件Object原型
- 理解js的 prototype原型物件JS原型物件
- JavaScript進階之原型鏈JavaScript原型
- Cris 的 Scala 筆記整理(九):物件導向高階筆記物件
- 侯捷C++物件導向高階開發筆記C++物件筆記