這篇文章主要介紹了javascript面向對象編程的知識點有哪些的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇javascript面向對象編程的知識點有哪些文章都會有所收獲,下面我們一起來看看吧。
這一板塊的內容主要是對之前Jquery的復習,復習了:函數的定義方法、函數的調用方法。
這一模塊的內容主要是學習不同函數中this指向的對象是誰、改變函數內部this的指向方法:call、apply、bind。
改變函數內部this的指向方法:call、apply、bind。
這三個方法共同點:都能改變this的指向;
這三個方法不同點:
call和apply會調用函數,并且改變函數內部this指向;
call和apply傳遞的參數不一樣,call傳遞參數使用逗號隔開,apply使用數組傳遞;
bind不會調用函數,可以改變函數內部this指向。
這一模塊的內容主要是學習了解什么是嚴格模式。
嚴格模式定義:ES5 的嚴格模式是采用具有限制性 JavaScript變體的一種方式,即在嚴格的條件下運行 JS 代碼。(嚴格模式在 IE10 以上版本的瀏覽器中才會被支持,舊版本瀏覽器中會被忽略。)
開啟嚴格模式:
為腳本開啟嚴格模式;
為函數開啟嚴格模式。
這一模塊的內容主要是學習高階函數的定義與相關應用。
高階函數定義:高階函數是對其他函數進行操作的函數,它接收函數作為參數或將函數作為返回值輸出。
最好理解的就是回調函數,它就是高階函數。
這一模塊的內容主要是學習閉包的定義、閉包的作用、閉包的運用。
閉包定義:閉包(closure)指有權訪問另一個函數作用域中變量的函數。簡單理解就是 ,一個作用域可以訪問另外一個函數內部的局部變量。
閉包作用:延申了變量的作用范圍。
閉包的運用:
點擊li打印當前索引號
<body>
<ul class='nav'>
<li>榴蓮</li>
<li>臭豆腐</li>
<li>鯡魚罐頭</li>
<li>大豬蹄子</li>
</ul>
</body>
<script>
// 原始獲得索引號的方法
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);
}
}
// 閉包的定義:指有權訪問另一個函數作用域中變量的函數。簡單理解就是 ,一個作用域可以訪問另外一個函數內部的局部變量。
// 需求:利用閉包來得到li的索引號
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); //我們為了點擊時才會出現i
}
})(i);
}
</script>3s后打印li里面的內容
<body>
<ul class='nav'>
<li>榴蓮</li>
<li>臭豆腐</li>
<li>鯡魚罐頭</li>
<li>大豬蹄子</li>
</ul>
</body>
<script>
// 利用閉包來得到li的索引號
var lis = document.querySelector(".nav").querySelectorAll("li");
for (var i = 0; i < lis.length; i++) {
(function(i) { //這是立即執行函數
// 簡單來說就是把定時器放在立即執行函數里面
setTimeout(function() { //在立即執行函數里的任何一個函數都可以調用立即執行函數里的變量
console.log(lis[i].innerHTML);
}, 2000)
})(i);
}
</script>打車價格的計算應用
<!-- 需求:打車起步價13(3公里內), 之后每多一公里增加 5塊錢. 用戶輸入公里數就可以計算打車價格
如果有擁堵情況,總價格多收取10塊錢擁堵費 -->
<script>
var car = (function() { //立即執行函數
var start = 13; //起步價
var total = 0; //總價
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;
} //擁堵的費用
}
})();
car.price();
console.log(car.price(5));
console.log(car.yd(true));
</script>這一模塊的內容主要是學習遞歸的定義、遞歸的運用。
遞歸的定義:如果一個函數在內部可以調用其本身,那么這個函數就是遞歸函數。簡單理解:函數內部自己調用自己, 這個函數就是遞歸函數。
注意:遞歸函數的作用和循環效果一樣,由于遞歸很容易發生“棧溢出”錯誤(stack overflow),所以必須要加退出條件return。
遞歸的運用:
求1~n的階乘
<script>
function fn(n) {
if (n == 1) {
return 1; //判斷條件來退出
}
return n * fn(n - 1); //思路:前一項*后一項
// 利用return來調用函數本身
};
// fn(); //遞歸類似于循環;自己調用自己
console.log(fn(4));
</script>求斐波那契數列
<script>
// 1、1、2、3、5、8、13、21...當用戶輸入n的值來得到在斐波那契數列中的值
function fb(n) {
if (n === 0 || n === 1 || n === 2) {
return 1;
} else {
return fb(n - 1) + fb(n - 2); //規律:當用戶輸入n我們得到(n-1)和(n-2)這兩項就能計算出n、對應的序列值
}
}
console.log(fb(0));
console.log(fb(4));
</script>遞歸遍歷數據
<script> var data = [{ id: 1, name: '家電', goods: [{ id: 11, gname: '冰箱' }, { id: 12, gname: '洗衣機' }] }, { id: 2, name: '服飾' }]; // 效果:我們想要輸入id號就可以返回的數據對象(利用遞歸來遍歷) // 1.利用forEach 去遍歷里面的每一個對象 function getID(json, id) { //json就是一整個大的數組 json.forEach(function(item) { //item就是data里面的id if (item.id == id) { console.log(item); // } else if (item.goods && item.goods.length > 0) { // 2.遍歷對象里面的對象11 12 可以利用遞歸函數(調用自己getID(對象里面的對象item.goods,id)) // 里面應該有goods這個數組并且數組的長度不為0 getID(item.goods, id); } }); } getID(data, 1); getID(data, 2); getID(data, 11);</script>這一模塊的內容主要是學習正則表達式定義、正則表達式在js中的使用。
關于“javascript面向對象編程的知識點有哪些”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“javascript面向對象編程的知識點有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。