基本類型與引用類型的區別
基本類型是保存在棧內存中的簡單數據段,大小固定。
引用類型是保存在堆內存中的對象,變量中保存的是指針,指向內存中另一個位置,大小不固定。
基本類型值有哪些?引用類型值有哪些?
基本類型值:undefined,null,number,string,boolean。
引用類型值:object,array,date,regexp,function,基本包裝類型。
Object類型
創建對象的常用兩種方法
- new Object(),借用原生構造函數;
- 通過對象字面量
推薦使用對象字面量方式創建對象,字面量初始化直接賦值,效率更高;代碼量少,給人一種封裝數據的感覺。
訪問對象屬性和方法的兩種常用方法
- 點表示法 .
- 方括號表示法 []
對比
點表示法使代碼更嚴謹,方便,少寫好幾個字符。是主流的寫法。
方括號表示法主要優點屬性可以是變量,關鍵字,保留字,錯誤的字符。
Array類型
創建數組的兩種常見方式
- 調用原生構造函數(Array())
- 使用數組字面量
優缺點對比
和對象的兩種方式一樣
創建一個包含只含數字20的數組
- new Array(20)的解決方案
new Array(20)創建的是一個長度為20的數組
var arr = new Array("20");
get20 = parseInt(arr[0]);
- var get20 = [20];
檢測數組方式的對比(選講)
- isArray()
- 其他
數組各種方法
轉換方法
tolacaleString() // 轉換為本地字符串,時間類型比較常用
toString() // 轉為傳統字符串,常用
value of() // 輸出本身的值
join() // 以不同的分隔符來分割數組
棧方法
分析棧的特性,后進先出push() // 添加到數組末尾,返回數組長度
pop() // 刪除并返回數組最后一項
隊列方法
與棧方法相反,先進先出shift() // 刪除并返回數組第一項
unshift() // 在數組前端添加任意項并返回新數組的長度
重排序方法
reverse() // 反轉
sort() // 按照字符編碼的順序從小到大排序,想按照數字順序方法可以借比較函數
把比較函數的例子列幾個出來
操作方法
concat() // 創建一個數組的副本,并把參數加到副本最后
slice() // 返回指定位置到數組末尾的所有項,不會影響原數組
splice() // 最強大的方法,刪除,插入,替換
位置方法
indexOf()
lastIndexOf()
迭代方法
解釋迭代是什么意思? 按順序訪問列表(數組)中每一項every()
filter()
forEach()
map()
some()
歸并方法
reduce()
-
reduceRight()
- 兩個方法都接受兩個參數,第一個參數為回調函數,回掉函數接受四個參數:
前一個值,當前值,當前項的索引,目前數組對象。 - 有兼容性
- 兩個方法都接受兩個參數,第一個參數為回調函數,回掉函數接受四個參數:
Date類型
直接寫一個獲取時間的例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="time"></div>
<script type="text/javascript">
(function time() {
var oTime = document.getElementById('time');
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1;
var day = now.getDate();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
var timer = null;
oTime.innerHTML = year+"年"+month+"月"+day+"日"+hour+"點"+minute+"分"+second+"秒";
timer = setInterval(time,1000);
function check(t) {
if(t < 10) {
return "0"+t;
}
}
})();
</script>
</body>
</html>
RegExp類型
創建正則表達式的兩種方式
- var reg1 = new RegExp("pattern","flags") // 借用原生正則構造函數
- var reg2 = / pattern / flags; // 正則字面量
優先使用字面量,使用正則字面量的時候需要對特殊字符進行轉義(\),
function類型
函數的內部屬性 this
函數運行時,會自動生成一個內部屬性(this指針),代表調用當前函數的對象;
function getThis(){
console.log(this);
}
getThis();