數據類型,構造函數,原型和原型鏈的一些講解補充
一、數據類型#
1.5 個基本類型#
string
number
boolean
undefined 未定義
null 值為空
symbol 表示一個符號,符號類型是唯一的並且是不可修改的
最常見的還是前三種,字符串,數字,布爾值
2. 常見的引用類型#
引用類型是一種數據結構,用於將數據和功能組織在一起
對象-Object, 陣列-Array, 函數-Function, 正則-RegExp, 日期-Date 等
二、函數#
1. 什麼是函數?#
- 具有獨立功能的代碼塊,在 js 中使用 function 關鍵字定義函數
- 讓代碼結構更加清晰,提高代碼可用性
- js 函數的分類:自定義函數和系統函數
2. 自定義函數#
有一種匿名函數,沒有名字的函數,創建閉包,避免造成全局變量的污染
匿名自執行函數
- 概念:匿名函數的定義完成後立即執行,執行函數表達式
- 作用:實現閉包和創建獨立的命名空間
- 使用:分組操作符 (),void 操作符,~ 操作符,! 操作符等等
- 使用場景:函數表達式,對象屬性,事件,事件參數,返回值
- 定義完匿名函數後,一定要調用
// 函數表達式
window.onload = function() {
let funcobj = function() {
alert("函數表達式中的匿名函數")
}
funcobj();
}
// 對象屬性
window.onload = function() {
let obj = {
name: function() {
alert('對象屬性中的匿名函數')
}
}
obj.name();
}
3. 內置函數#
放在全局下面叫做函數,放在對象裡面被叫做方法,對象的方法
- 常規函數
alert() // 彈出框
confirm() // 彈出一個確認框
prompt() // 彈出一個輸入框
isNaN() // 判斷是否為數字
parseInt() // 將字符串或浮點數轉換為整數
parseFloat() // 將字符串轉換為整數或浮點數
eval() // 計算表達式的結果
- 陣列函數
用for循環
遍歷陣列
var arr = [1,2,3,4];
for(var i = 0; i<arr.length; i++) {
console.log(arr[i])
}
// 輸出 1,2,3,4
通過for in
遍歷陣列
var arr = [1,2,3,4];
for (var i in arr) {
console.log(arr[i]);
}
// 輸出 1,2,3,4
// 增加
unshift() // 添加元素在陣列首部,返回值是陣列長度
push() // 添加元素在陣列尾部,返回值是陣列長度
conat() // 連接兩個陣列,返回值是連接後的陣列
var arr1 = [1];
var arr2 = [2];
let arr = arr1.concat(arr2);
console.log(arr); // [1,2]
/*****************************************/
// 刪除
pop() // 刪除陣列最後一個元素,返回值是刪除的元素
shift() // 刪除陣列第一個元素,返回值是刪除的元素
splice(a,b) // 刪除指定位置a後的b個元素,返回值是刪除的元素
slice(a,b) // 刪除從a位置到b位置之間的元素
/*****************************************/
// 查找
indexOf() // 判斷陣列是否包含指定元素,存在返回元素,不存在返回-1
includes() // 判斷陣列是否包含指定元素,存在返回true,不存在返回false
/*****************************************/
// 其他
sort() // 將陣列按照規則排序
var arr1 = [4,5,6];
var arr2 = [1,2,3];
var arrAscSort = arr5.sort((a, b) => a-b); // 升序排序
console.log(arrAscSort); // [ 1, 1, 2, 3, 5, 6 ]
var arrDescSort = arr5.sort((a, b) => b-a); // 降序排序
console.log(arrDescSort); // [ 6, 5, 3, 2, 1, 1 ]
reerse() // 陣列反轉
var arr = [1,2,3,4,5,6];
// 直接通過reverse()方法調用
console.log(arr.reverse()) // [6,5,4,3,2,1]
Array.from() // 將一串數據轉換為陣列形式
var str = '將一串數據轉換為陣列形式'
console.log(Array.from(str))
// ["將", "一", "串", "數", "據", "轉", "換", "為", "陣", "列", "形", "式"]
Array.isArray() // 判斷一個變量是否為陣列
var str = '將一串數據轉換為陣列形式'
console.log(Array.isArray(str))
// false
- 日期函數 Date ()
獲取時間
var time = new Date()
// 獲取當前時間
// Fri Nov 13 2020 20:21:35 GMT+0800 (中國標準時間)
getFullYear() // 獲取當前年份
getMonth() // 獲取當月月份 -1
getDate() // 獲取當天日期
getHours() // 獲取當前小時
getMinutes() // 獲取當前分鐘
getSeconds() // 獲取當前秒
getMilliseconds() // 獲取當前毫秒
getTime() // 時間戳-獲取1970年至今的毫秒數
設置時間
setYear() // 設置年份
setMonth() // 設置月份
setDate() // 設置日期
setHours() // 設置小時
setMinutes() // 設置分鐘
setSeconds() // 設置秒
- 數學函數 Math
主要常用的數學函數方法
Math.abs() // 絕對值
Math.ceil() // 向上取整
Math.floor()// 向下取整
Math.round()// 四捨五入
Math.random() // 生成0-1之間的隨機數
random () 的延伸用法---生成指定位的隨機數
function getRandomNumber(min, max){
return Math.floor(Math.random()*(max - min)) + min;
}
console.log(getRandomNumber(1000, 9999));
- 字符串函數
indexOf() // 查找字符串,返回索引值
var arr = ["字", "符", "串", "函", "數"]
console.log(arr.indexOf("串")) // 2
split() // 將字符串按照指定的分隔符分割開來
var str = "字符串函數"
console.log(str.split('')) // ["字", "符", "串", "函", "數"]
trim() // 清除字符串兩端的空格
var str = " 字符串函數 "
console.log(str) // [ 字符串函數 ]
console.log(str.trim()) // [字符串函數]
match() // 按照制定規則查找值
var str = "字符串函數字符串函數"
console.log(str.match(/字符串/)) // 字符串
document.write(str.match(/字符串/)) // 字符串
search() // 返回字符串
首次出現的位置
var str = "字符串函數字符串函數"
console.log(str.search('串')) // 2
replace() // 替換指定的字符串
var str = "字符串函數字符串函數"
console.log(str.replace('字','函'))
// 函符串函數字符串函數
substring(a,b) // 從指定位置切割字符串,左閉右開
// 從索引a,截取到b
var str = "字符串函數字符串函數"
console.log(str.substring(0,3)) // 字符串
substr(a,b) // 從指定位置切指定個字符
// 從索引a開始,截取b個字符
var str = "字符串函數字符串函數"
console.log(str.substr(0,3)) // 字符串