javascript的面向?qū)ο缶幊桃黄饋砜纯?/h1>
更新時(shí)間:2022年02月15日 14:54:18 作者:實(shí)習(xí)期小潘
這篇文章主要為大家詳細(xì)介紹了javascript的面向?qū)ο缶幊?,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
年后來工作的我,be like:

而且刷微博刷著刷著也會(huì)遇到一群說出我心中所想的話:

嗚嗚嗚~~(我是分割線)~~
好啦,不管怎樣生活總還是要繼續(xù)的!

在年后的這些天里我一邊炫沙糖桔一邊也開始陸陸續(xù)續(xù)開始重新投入學(xué)習(xí),主要學(xué)習(xí)的是面向編程對(duì)象。
同樣先放上一張學(xué)習(xí)框架圖:

函數(shù)的定義和使用
這一板塊的內(nèi)容主要是對(duì)之前Jquery的復(fù)習(xí),復(fù)習(xí)了:函數(shù)的定義方法、函數(shù)的調(diào)用方法。(在這我就不做過多的贅述)
this指向問題
這一模塊的內(nèi)容主要是學(xué)習(xí)不同函數(shù)中this指向的對(duì)象是誰、改變函數(shù)內(nèi)部this的指向方法:call
、apply
、bind
。
改變函數(shù)內(nèi)部this的指向方法:call
、apply
、bind
。
這三個(gè)方法共同點(diǎn):都能改變this的指向;
這三個(gè)方法不同點(diǎn):
- call和apply會(huì)調(diào)用函數(shù),并且改變函數(shù)內(nèi)部this指向;
- call和apply傳遞的參數(shù)不一樣,call傳遞參數(shù)使用逗號(hào)隔開,apply使用數(shù)組傳遞;
- bind不會(huì)調(diào)用函數(shù),可以改變函數(shù)內(nèi)部this指向。
嚴(yán)格模式
這一模塊的內(nèi)容主要是學(xué)習(xí)了解什么是嚴(yán)格模式。
嚴(yán)格模式定義:ES5 的嚴(yán)格模式是采用具有限制性 JavaScript變體的一種方式,即在嚴(yán)格的條件下運(yùn)行 JS 代碼。(嚴(yán)格模式在 IE10 以上版本的瀏覽器中才會(huì)被支持,舊版本瀏覽器中會(huì)被忽略。)
開啟嚴(yán)格模式:
- 為腳本開啟嚴(yán)格模式;
- 為函數(shù)開啟嚴(yán)格模式。
高階函數(shù)
這一模塊的內(nèi)容主要是學(xué)習(xí)高階函數(shù)的定義與相關(guān)應(yīng)用。
高階函數(shù)定義:高階函數(shù)是對(duì)其他函數(shù)進(jìn)行操作的函數(shù),它接收函數(shù)作為參數(shù)或?qū)⒑瘮?shù)作為返回值輸出。
最好理解的就是回調(diào)函數(shù),它就是高階函數(shù)。
閉包
這一模塊的內(nèi)容主要是學(xué)習(xí)閉包的定義、閉包的作用、閉包的運(yùn)用。
閉包定義:閉包(closure)指有權(quán)訪問另一個(gè)函數(shù)作用域中變量的函數(shù)。簡(jiǎn)單理解就是 ,一個(gè)作用域可以訪問另外一個(gè)函數(shù)內(nèi)部的局部變量。
閉包作用:延申了變量的作用范圍。
閉包的運(yùn)用:
點(diǎn)擊li打印當(dāng)前索引號(hào)
<body>
<ul class='nav'>
<li>榴蓮</li>
<li>臭豆腐</li>
<li>鯡魚罐頭</li>
<li>大豬蹄子</li>
</ul>
</body>
<script>
// 原始獲得索引號(hào)的方法
var lis = document.querySelector(".nav").querySelectorAll("li");
for (var i = 0; i < lis.length; i++) {
lis[i].index = i;
lis[i].onclick = function() {
console.log(this.index);
}
}
// 閉包的定義:指有權(quán)訪問另一個(gè)函數(shù)作用域中變量的函數(shù)。簡(jiǎn)單理解就是 ,一個(gè)作用域可以訪問另外一個(gè)函數(shù)內(nèi)部的局部變量。
// 需求:利用閉包來得到li的索引號(hào)
var lis = document.querySelector(".nav").querySelectorAll("li");
for (var i = 0; i < lis.length; i++) {
(function(i) {
// console.log(i);
lis[i].onclick = function() {
console.log(i); //我們?yōu)榱它c(diǎn)擊時(shí)才會(huì)出現(xiàn)i
}
})(i);
}
</script>
3s后打印li里面的內(nèi)容
<body>
<ul class='nav'>
<li>榴蓮</li>
<li>臭豆腐</li>
<li>鯡魚罐頭</li>
<li>大豬蹄子</li>
</ul>
</body>
<script>
// 利用閉包來得到li的索引號(hào)
var lis = document.querySelector(".nav").querySelectorAll("li");
for (var i = 0; i < lis.length; i++) {
(function(i) { //這是立即執(zhí)行函數(shù)
// 簡(jiǎn)單來說就是把定時(shí)器放在立即執(zhí)行函數(shù)里面
setTimeout(function() { //在立即執(zhí)行函數(shù)里的任何一個(gè)函數(shù)都可以調(diào)用立即執(zhí)行函數(shù)里的變量
console.log(lis[i].innerHTML);
}, 2000)
})(i);
}
</script>
打車價(jià)格的計(jì)算應(yīng)用
<!-- 需求:打車起步價(jià)13(3公里內(nèi)), 之后每多一公里增加 5塊錢. 用戶輸入公里數(shù)就可以計(jì)算打車價(jià)格
如果有擁堵情況,總價(jià)格多收取10塊錢擁堵費(fèi) -->
<script>
var car = (function() { //立即執(zhí)行函數(shù)
var start = 13; //起步價(jià)
var total = 0; //總價(jià)
return {
price: function(n) {
if (n <= 3) {
total = start;
} else {
total = start + (n - 3) * 5;
}
return total;
},
yd: function(flag) {
return flag ? total + 10 : total;
} //擁堵的費(fèi)用
}
})();
car.price();
console.log(car.price(5));
console.log(car.yd(true));
</script>
遞歸
這一模塊的內(nèi)容主要是學(xué)習(xí)遞歸的定義、遞歸的運(yùn)用。
遞歸的定義:如果一個(gè)函數(shù)在內(nèi)部可以調(diào)用其本身,那么這個(gè)函數(shù)就是遞歸函數(shù)。簡(jiǎn)單理解:函數(shù)內(nèi)部自己調(diào)用自己, 這個(gè)函數(shù)就是遞歸函數(shù)。
注意:遞歸函數(shù)的作用和循環(huán)效果一樣,由于遞歸很容易發(fā)生“棧溢出”錯(cuò)誤(stack overflow),所以必須要加退出條件return。
遞歸的運(yùn)用:
求1~n的階乘
<script>
function fn(n) {
if (n == 1) {
return 1; //判斷條件來退出
}
return n * fn(n - 1); //思路:前一項(xiàng)*后一項(xiàng)
// 利用return來調(diào)用函數(shù)本身
};
// fn(); //遞歸類似于循環(huán);自己調(diào)用自己
console.log(fn(4));
</script>
求斐波那契數(shù)列
<script>
// 1、1、2、3、5、8、13、21...當(dāng)用戶輸入n的值來得到在斐波那契數(shù)列中的值
function fb(n) {
if (n === 0 || n === 1 || n === 2) {
return 1;
} else {
return fb(n - 1) + fb(n - 2); //規(guī)律:當(dāng)用戶輸入n我們得到(n-1)和(n-2)這兩項(xiàng)就能計(jì)算出n、對(duì)應(yīng)的序列值
}
}
console.log(fb(0));
console.log(fb(4));
</script>
遞歸遍歷數(shù)據(jù)
<script> var data = [{ id: 1, name: '家電', goods: [{ id: 11, gname: '冰箱' }, { id: 12, gname: '洗衣機(jī)' }] }, { id: 2, name: '服飾' }]; // 效果:我們想要輸入id號(hào)就可以返回的數(shù)據(jù)對(duì)象(利用遞歸來遍歷) // 1.利用forEach 去遍歷里面的每一個(gè)對(duì)象 function getID(json, id) { //json就是一整個(gè)大的數(shù)組 json.forEach(function(item) { //item就是data里面的id if (item.id == id) { console.log(item); // } else if (item.goods && item.goods.length > 0) { // 2.遍歷對(duì)象里面的對(duì)象11 12 可以利用遞歸函數(shù)(調(diào)用自己getID(對(duì)象里面的對(duì)象item.goods,id)) // 里面應(yīng)該有g(shù)oods這個(gè)數(shù)組并且數(shù)組的長(zhǎng)度不為0 getID(item.goods, id); } }); } getID(data, 1); getID(data, 2); getID(data, 11);</script>
正則表達(dá)式
這一模塊的內(nèi)容主要是學(xué)習(xí)正則表達(dá)式定義、正則表達(dá)式在js中的使用。(該模塊需要查閱文本來使用)
學(xué)習(xí)框架如下:

ES6
這一模塊的內(nèi)容主要是學(xué)習(xí)ES6新增語法、ES6內(nèi)置對(duì)象拓展。
ES6新增語法框架:

ES6內(nèi)置對(duì)象拓展框架:

總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
-
Javascript學(xué)習(xí)筆記5 類和對(duì)象
首先,不得不說,我無法達(dá)到拋開類和對(duì)象的概念來看Javascript的境界,對(duì)于Javascript是否是面向?qū)ο蟮恼f法有很多,不過我最認(rèn)同的還是Javascript是一種“基于prototype的面向?qū)ο笳Z言”。 2010-01-01
-
簡(jiǎn)單總結(jié)JavaScript中的String字符串類型
就像其他語言那樣,js中的字符串類型可以表示一串字符,由雙引號(hào)包住,這里簡(jiǎn)單總結(jié)JavaScript中的String字符串類型的一些基礎(chǔ)知識(shí) 2016-05-05
-
零基礎(chǔ)學(xué)JavaScript最新動(dòng)畫教程+iso光盤下載
2008-01-01
-
JavaScript中require和import的區(qū)別詳解
本文詳細(xì)講解了JS中require和import的區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2022-06-06
-
JavaScript mapreduce工作原理簡(jiǎn)析
MapReduce是一個(gè)編程模型,用于作業(yè)調(diào)度,也是一個(gè)處理和生成超大數(shù)據(jù)集的算法模型的相關(guān)實(shí)現(xiàn),本文將詳細(xì)介紹JavaScript mapreduce工作原理,需要的朋友可以參考下 2012-11-11
-
javascript類型系統(tǒng)——日期Date對(duì)象全面了解
下面小編就為大家?guī)硪黄猨avascript類型系統(tǒng)——日期Date對(duì)象全面了解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧 2016-07-07
-
JavaScript strike方法入門實(shí)例(給字符串加上刪除線)
這篇文章主要介紹了JavaScript strike方法入門實(shí)例,strike方法用于給字符串加上刪除線,需要的朋友可以參考下 2014-10-10
-
JavaScript 判斷判斷某個(gè)對(duì)象是Object還是一個(gè)Array
在開發(fā)中,我們經(jīng)常需要判斷某個(gè)對(duì)象是否為數(shù)組類型,在Js中檢測(cè)對(duì)象類型的常見方法都有哪些呢?
2010-01-01
最新評(píng)論
年后來工作的我,be like:
而且刷微博刷著刷著也會(huì)遇到一群說出我心中所想的話:
嗚嗚嗚~~(我是分割線)~~
好啦,不管怎樣生活總還是要繼續(xù)的!
在年后的這些天里我一邊炫沙糖桔一邊也開始陸陸續(xù)續(xù)開始重新投入學(xué)習(xí),主要學(xué)習(xí)的是面向編程對(duì)象。
同樣先放上一張學(xué)習(xí)框架圖:
函數(shù)的定義和使用
這一板塊的內(nèi)容主要是對(duì)之前Jquery的復(fù)習(xí),復(fù)習(xí)了:函數(shù)的定義方法、函數(shù)的調(diào)用方法。(在這我就不做過多的贅述)
this指向問題
這一模塊的內(nèi)容主要是學(xué)習(xí)不同函數(shù)中this指向的對(duì)象是誰、改變函數(shù)內(nèi)部this的指向方法:call
、apply
、bind
。
改變函數(shù)內(nèi)部this的指向方法:call
、apply
、bind
。
這三個(gè)方法共同點(diǎn):都能改變this的指向;
這三個(gè)方法不同點(diǎn):
- call和apply會(huì)調(diào)用函數(shù),并且改變函數(shù)內(nèi)部this指向;
- call和apply傳遞的參數(shù)不一樣,call傳遞參數(shù)使用逗號(hào)隔開,apply使用數(shù)組傳遞;
- bind不會(huì)調(diào)用函數(shù),可以改變函數(shù)內(nèi)部this指向。
嚴(yán)格模式
這一模塊的內(nèi)容主要是學(xué)習(xí)了解什么是嚴(yán)格模式。
嚴(yán)格模式定義:ES5 的嚴(yán)格模式是采用具有限制性 JavaScript變體的一種方式,即在嚴(yán)格的條件下運(yùn)行 JS 代碼。(嚴(yán)格模式在 IE10 以上版本的瀏覽器中才會(huì)被支持,舊版本瀏覽器中會(huì)被忽略。)
開啟嚴(yán)格模式:
- 為腳本開啟嚴(yán)格模式;
- 為函數(shù)開啟嚴(yán)格模式。
高階函數(shù)
這一模塊的內(nèi)容主要是學(xué)習(xí)高階函數(shù)的定義與相關(guān)應(yīng)用。
高階函數(shù)定義:高階函數(shù)是對(duì)其他函數(shù)進(jìn)行操作的函數(shù),它接收函數(shù)作為參數(shù)或?qū)⒑瘮?shù)作為返回值輸出。
最好理解的就是回調(diào)函數(shù),它就是高階函數(shù)。
閉包
這一模塊的內(nèi)容主要是學(xué)習(xí)閉包的定義、閉包的作用、閉包的運(yùn)用。
閉包定義:閉包(closure)指有權(quán)訪問另一個(gè)函數(shù)作用域中變量的函數(shù)。簡(jiǎn)單理解就是 ,一個(gè)作用域可以訪問另外一個(gè)函數(shù)內(nèi)部的局部變量。
閉包作用:延申了變量的作用范圍。
閉包的運(yùn)用:
點(diǎn)擊li打印當(dāng)前索引號(hào)
<body> <ul class='nav'> <li>榴蓮</li> <li>臭豆腐</li> <li>鯡魚罐頭</li> <li>大豬蹄子</li> </ul> </body> <script> // 原始獲得索引號(hào)的方法 var lis = document.querySelector(".nav").querySelectorAll("li"); for (var i = 0; i < lis.length; i++) { lis[i].index = i; lis[i].onclick = function() { console.log(this.index); } } // 閉包的定義:指有權(quán)訪問另一個(gè)函數(shù)作用域中變量的函數(shù)。簡(jiǎn)單理解就是 ,一個(gè)作用域可以訪問另外一個(gè)函數(shù)內(nèi)部的局部變量。 // 需求:利用閉包來得到li的索引號(hào) var lis = document.querySelector(".nav").querySelectorAll("li"); for (var i = 0; i < lis.length; i++) { (function(i) { // console.log(i); lis[i].onclick = function() { console.log(i); //我們?yōu)榱它c(diǎn)擊時(shí)才會(huì)出現(xiàn)i } })(i); } </script>
3s后打印li里面的內(nèi)容
<body> <ul class='nav'> <li>榴蓮</li> <li>臭豆腐</li> <li>鯡魚罐頭</li> <li>大豬蹄子</li> </ul> </body> <script> // 利用閉包來得到li的索引號(hào) var lis = document.querySelector(".nav").querySelectorAll("li"); for (var i = 0; i < lis.length; i++) { (function(i) { //這是立即執(zhí)行函數(shù) // 簡(jiǎn)單來說就是把定時(shí)器放在立即執(zhí)行函數(shù)里面 setTimeout(function() { //在立即執(zhí)行函數(shù)里的任何一個(gè)函數(shù)都可以調(diào)用立即執(zhí)行函數(shù)里的變量 console.log(lis[i].innerHTML); }, 2000) })(i); } </script>
打車價(jià)格的計(jì)算應(yīng)用
<!-- 需求:打車起步價(jià)13(3公里內(nèi)), 之后每多一公里增加 5塊錢. 用戶輸入公里數(shù)就可以計(jì)算打車價(jià)格 如果有擁堵情況,總價(jià)格多收取10塊錢擁堵費(fèi) --> <script> var car = (function() { //立即執(zhí)行函數(shù) var start = 13; //起步價(jià) var total = 0; //總價(jià) return { price: function(n) { if (n <= 3) { total = start; } else { total = start + (n - 3) * 5; } return total; }, yd: function(flag) { return flag ? total + 10 : total; } //擁堵的費(fèi)用 } })(); car.price(); console.log(car.price(5)); console.log(car.yd(true)); </script>
遞歸
這一模塊的內(nèi)容主要是學(xué)習(xí)遞歸的定義、遞歸的運(yùn)用。
遞歸的定義:如果一個(gè)函數(shù)在內(nèi)部可以調(diào)用其本身,那么這個(gè)函數(shù)就是遞歸函數(shù)。簡(jiǎn)單理解:函數(shù)內(nèi)部自己調(diào)用自己, 這個(gè)函數(shù)就是遞歸函數(shù)。
注意:遞歸函數(shù)的作用和循環(huán)效果一樣,由于遞歸很容易發(fā)生“棧溢出”錯(cuò)誤(stack overflow),所以必須要加退出條件return。
遞歸的運(yùn)用:
求1~n的階乘
<script> function fn(n) { if (n == 1) { return 1; //判斷條件來退出 } return n * fn(n - 1); //思路:前一項(xiàng)*后一項(xiàng) // 利用return來調(diào)用函數(shù)本身 }; // fn(); //遞歸類似于循環(huán);自己調(diào)用自己 console.log(fn(4)); </script>
求斐波那契數(shù)列
<script> // 1、1、2、3、5、8、13、21...當(dāng)用戶輸入n的值來得到在斐波那契數(shù)列中的值 function fb(n) { if (n === 0 || n === 1 || n === 2) { return 1; } else { return fb(n - 1) + fb(n - 2); //規(guī)律:當(dāng)用戶輸入n我們得到(n-1)和(n-2)這兩項(xiàng)就能計(jì)算出n、對(duì)應(yīng)的序列值 } } console.log(fb(0)); console.log(fb(4)); </script>
遞歸遍歷數(shù)據(jù)
<script> var data = [{ id: 1, name: '家電', goods: [{ id: 11, gname: '冰箱' }, { id: 12, gname: '洗衣機(jī)' }] }, { id: 2, name: '服飾' }]; // 效果:我們想要輸入id號(hào)就可以返回的數(shù)據(jù)對(duì)象(利用遞歸來遍歷) // 1.利用forEach 去遍歷里面的每一個(gè)對(duì)象 function getID(json, id) { //json就是一整個(gè)大的數(shù)組 json.forEach(function(item) { //item就是data里面的id if (item.id == id) { console.log(item); // } else if (item.goods && item.goods.length > 0) { // 2.遍歷對(duì)象里面的對(duì)象11 12 可以利用遞歸函數(shù)(調(diào)用自己getID(對(duì)象里面的對(duì)象item.goods,id)) // 里面應(yīng)該有g(shù)oods這個(gè)數(shù)組并且數(shù)組的長(zhǎng)度不為0 getID(item.goods, id); } }); } getID(data, 1); getID(data, 2); getID(data, 11);</script>
正則表達(dá)式
這一模塊的內(nèi)容主要是學(xué)習(xí)正則表達(dá)式定義、正則表達(dá)式在js中的使用。(該模塊需要查閱文本來使用)
學(xué)習(xí)框架如下:
ES6
這一模塊的內(nèi)容主要是學(xué)習(xí)ES6新增語法、ES6內(nèi)置對(duì)象拓展。
ES6新增語法框架:
ES6內(nèi)置對(duì)象拓展框架:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Javascript學(xué)習(xí)筆記5 類和對(duì)象
首先,不得不說,我無法達(dá)到拋開類和對(duì)象的概念來看Javascript的境界,對(duì)于Javascript是否是面向?qū)ο蟮恼f法有很多,不過我最認(rèn)同的還是Javascript是一種“基于prototype的面向?qū)ο笳Z言”。2010-01-01簡(jiǎn)單總結(jié)JavaScript中的String字符串類型
就像其他語言那樣,js中的字符串類型可以表示一串字符,由雙引號(hào)包住,這里簡(jiǎn)單總結(jié)JavaScript中的String字符串類型的一些基礎(chǔ)知識(shí)2016-05-05零基礎(chǔ)學(xué)JavaScript最新動(dòng)畫教程+iso光盤下載
2008-01-01JavaScript中require和import的區(qū)別詳解
本文詳細(xì)講解了JS中require和import的區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06JavaScript mapreduce工作原理簡(jiǎn)析
MapReduce是一個(gè)編程模型,用于作業(yè)調(diào)度,也是一個(gè)處理和生成超大數(shù)據(jù)集的算法模型的相關(guān)實(shí)現(xiàn),本文將詳細(xì)介紹JavaScript mapreduce工作原理,需要的朋友可以參考下2012-11-11javascript類型系統(tǒng)——日期Date對(duì)象全面了解
下面小編就為大家?guī)硪黄猨avascript類型系統(tǒng)——日期Date對(duì)象全面了解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07JavaScript strike方法入門實(shí)例(給字符串加上刪除線)
這篇文章主要介紹了JavaScript strike方法入門實(shí)例,strike方法用于給字符串加上刪除線,需要的朋友可以參考下2014-10-10JavaScript 判斷判斷某個(gè)對(duì)象是Object還是一個(gè)Array
在開發(fā)中,我們經(jīng)常需要判斷某個(gè)對(duì)象是否為數(shù)組類型,在Js中檢測(cè)對(duì)象類型的常見方法都有哪些呢?2010-01-01