1.內置對象
JavaScript中的對象分爲3種:自定義對象、內置對象、瀏覽器對象,前兩種對象是js基礎內容,屬於ECMAScript;第三種瀏覽器對象屬於js獨有。
內置對象:就是指js語言自帶的一些對象,這些對象供開發者使用,並提供了一些常見的或是基本而必須要的功能(屬性和方法)
內置對象最大的優點:幫助我們快速開發
JavaScript提供了多個內置對象:Math.Date.Array.String等。
2.Math概述
Math對象不是構造函數,它具有數學常數和函數的屬性和方法,跟數學相關的運算(求絕對值,取整,最大值等)可以使用Math中的成員。
Math.PI 圓周率
Math.floor()向下取整
Math.ceil()向上取整
Math.round()四捨五入 就近取整
Math.abs()絕對值
Math.max()//Math.min()求最大值和最小值
<script>
//1.絕對值方法
console.log(Math.abs(1));
console.log(Math.abs('-1')); //隱式轉換 會把字符串型-1轉換成數字型
console.log(Math.abs('pink')); //NaN
//2.三個取整方法
//(1)Math.floor() 向下取整,往小了取
console.log(Math.floor(1.9));
//(2)Math.ceil() 向上取整
console.log(Math.ceil(1.1));
//(3)Math.round 四捨五入 其他數字都是四捨五入 但是.5 特殊 他往大了取
console.log(Math.round(1.1));
console.log(Math.round(1.9));
console.log(Math.round(-1.5)); //-1
</script>
3.Date概述
(1)Date對象和Math對象不一樣,他是一個構造函數,我們需要實例化後才能使用;
(2)Date實例用來處理日期和時間;
(3)Date()方法的使用:1)獲取時間必須實例化;2)Date構造函數的參數;3)日期格式化
<script>
//格式化日期 年月日
var date = new Date();
console.log(date.getFullYear()); //返回當前的年
console.log(date.getMonth() + 1); //月份 返回的月份小一個月 月份+1
console.log(date.getDate());
console.log(date.getDay()); //週一返回的1 週日返回 0
//我們寫 xx年xx月xx日 星期x
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates = date.getDate();
var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
var day = date.getDay();
console.log('今天是' + year + '年' + month +'月' + dates + '日 ' + arr[day]);
</script>
<script>
//格式化日期 時分秒
var date = new Date();
console.log(date.getHours()); //時
console.log(date.getMinutes()); //分
console.log(date.getSeconds()); //秒
//要求封裝一個函數返回當前的時分秒 格式 08:08:08
function getTime(){
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h : h;
var m = time.getMinutes();
m = m < 10 ? '0' + m : m;
var s = time.getSeconds();
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
console.log(getTime());
</script>
(4)獲得Date總的毫秒數(時間戳)
<script>
//獲得Date總的毫秒數 (時間戳) 不是當前時間的毫秒數 而是距離1970年1月1號過了多少毫秒數
//1.通過 valueOf() getTime()
var date = new Date();
console.log(date.valueOf()); //就是我們現在時間
console.log(date.getTime());
//2.簡單寫法(最常用的)
var date1 = +new Date(); //+new Date() 返回的就是總毫秒數
console.log(date1);
//3.H5 新增的獲得總的毫秒數
console.log(Date.now());
</script>
倒計時效果:
function conutDown(time) {
var nowTime = +new Date(); //返回的是當前時間總的毫秒數
var inputTime = +new Date(time); //返回的是用戶輸入時間總的毫秒數
var times = (inputTime - nowTime) / 1000; //time是剩餘時間總的毫秒數
var d = parseInt(times / 60 / 60 / 24);
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24);
h = h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60);
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60);
s = s < 10 ? '0' + s : s;
return d + '天' + h + '時' + m + '分' + s + '秒';
}
console.log(conutDown('2020-3-18 15:00:00'));
var date = new Date();
console.log(date);
</script>
4.數組概述
檢測是否爲數組的兩種方法:(1) instanceof 運算符 它可以用來檢測是否爲數組
(2)Array.isArray(參數) H5新增方法 ie9以上版本支持
<script>
//創建數組的兩種方式
//1.利用數組字面量
var arr = [1, 2, 3];
console.log(arr[0]);
//2.利用 new Array()
// var arr1 = new Array(); //創建了一個空的數組
// var arr1 = new Array(2); //這個2表示數組長度爲2 裏面有2個空的數組元素
var arr1 = new Array(2, 3);
console.log(arr1);
</script>
<script>
function reverse(arr){
if (arr instanceof Array){
var newArr = [];
for(var i = arr.length; i >= 0; i--){
newArr[newArr.length] = arr[i];
}
return newArr;
}else{
return '這個參數要求必須是數組形式';
}
}
var arr1 = reverse(1, 3, 4, 5, 9);
console.log(arr1);
var arr2 = reverse(['pingk', 'blue', 'green']);
console.log(arr2);
//檢測是否爲數組
//(1) instanceof 運算符 它可以用來檢測是否爲數組
var arr = [];
var obj = {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);
//(2)Array.isArray(參數) H5新增方法 ie9以上版本支持
console.log(Array.isArray(arr));
console.log(Array.isArray(obj));
</script>
(1)添加刪除數組的方法
<script>
//添加刪除數組方法
//1.push() 在我們數組末尾 添加一個或者多個數組元素
var arr = [1, 2, 3];
arr.push(4, 'pink');
console.log(arr);
//(1)push是可以給數組追加新的元素
//(2)push() 參數直接寫 數組元素就可以了
//(3)push完畢之後,返回結果是新數組的長度
//(4)原數組也會發生變化
//2.unshift 在我們數組的開頭 添加一個或者多個數組元素
console.log(arr.unshift('red', 'purple'));
console.log(arr);
//(1)unshift 是可以給數組追加新的元素
//(2)unshift()參數直接寫數組元素就可以了
//(3)unshift完畢之後,返回的結果時 新數組的長度
//(4)原數組也會發生變化
//3.pop() 它可以刪除數組的
console.log(arr.pop());
console.log(arr);
//(1)pop 是可以刪除數組的最後一個元素 一次只能刪除一個元素
//(2)pop() 沒有參數
//(3)pop 完畢之後,返回結果是刪除的那個元素
//(4)原數組也會發生變化
//4.shift() 它可以刪除數組的第一個元素
console.log(arr.shift());
console.log(arr);
//(1)shift是可以刪除數組的第一個元素 一次只能刪除一個元素
//(2)shift() 沒有參數
//(3)shift 完畢之後,返回結果是刪除的那個元素
//(4)原數組也會發生變化
</script>
(2)數組的翻轉排序
<script>
//數組排序
//1.數組翻轉
var arr = ['pink', 'red', 'blue'];
arr.reverse();
console.log(arr);
//2.數組排序
var arr1 = [13, 4, 77, 1, 7];
arr1.sort(function(a, b){
// return a - b; //按照升序排列
return b - a;
});
console.log(arr1);
</script>
(3)數組的索引
<script>
//返回數組元素索引號方法 indexOf(數組元素)返回該數組元素的索引號
//它只返回第一個滿足條件的索引號
//它如果在數組中找不到元素 則返回 -1
var arr = ['red', 'green', 'pink'];
console.log(arr.indexOf('blue'));
var arr = ['red', 'green', 'pink', 'blue'];
console.log(arr.lastIndexOf('blue')); //從後面進行查找 3
</script>
利用索引實現數組去重:
<script>
//封裝一個去重的數組 unique
function unique(arr){
var newArry = [];
for(var i = 0; i < arr.length; i++){
if(newArry.indexOf(arr[i]) === -1){
newArry.push(arr[i]);
}
}
return newArry;
}
// var demo = unique(['c', 'a', 'z', 'a', 'x', 'c', 'b']);
var demo = unique(['red', 'blue', 'red']);
console.log(demo)
</script>
(4)數組轉換成字符串
<script>
//數組轉換成字符串
//1.toString() 將給我們的數組轉換成字符串
var arr = [1, 2, 3];
console.log(arr.toString()); //1,2,3
//2.join (分隔符)
var arr1 = ['green', 'blue', 'pink'];
console.log(arr1.join());
console.log(arr1.join('-'));//green-blue-pink
</script>
5.字符串對象
(1)基本包裝類型
爲了方便操作基本數據類型,JavaScript還提供了三個特殊的引用類型:String、Number和Boolean。基本包裝類型就是把簡單數據類型包裝成爲複雜數據類型,這樣基本數據類型就有了屬性和方法。
(2)字符串的不可變
指的是裏面的值不可變,雖然看上去可以改變內容,但其實地址變了,內存中新開闢了一個內存空間。
<script>
//字符串的不可變性
var str = 'andy';
console.log(str);
str = 'red';
console.log(str);
//因爲我們字符串不可變所以不要大量拼接字符串
var str = '';
for(var i = 1; i < 100; i++){
str += i;
}
console.log(str);
</script>
(3)根據字符返回位置
字符串所有方法,都不會修改字符串本身(字符串是不可變的),操作完成會返回一個新的字符串
<script>
//字符串對象 根據字符返回位置 str.indexOf('要查找的字符',[起始位置])
var str = '改革春風吹滿地,春天來了';
console.log(str.indexOf('春'));
console.log(str.indexOf('春', 3));//從索引號是3的位置開始查找
</script>
<script>
//查找字符串"abcoefoxyozzopp"中所有o出現的位置以及次數
//核心算法:先查找第一個o出現的位置
//然後只要indexOf返回結果不是-1 就繼續往後找
//因爲indexOf只能查找第一個,所以後面的查找,一定是當前索引加一,從而繼續查找
var str = "oabcoefoxyozzopp";
var index = str.indexOf('o');
var num = 0;
// console.log(index);
while(index !== -1){
console.log(index);
num++;
index = str.indexOf('o', index + 1);
}
console.log('o出現的次數是:' + num);
</script>
(4)根據位置返回字符
1)charAt:返回指定位置的字符(index字符串的索引號)str.charAt(0)
2)charCodeAt(index):獲取指定位置字符的ASCll碼(index索引號)str.charCodeAt(0)
3)str[index獲取指定位置處字符 HTML5,IE8+支持 和charAt()等效
<script>
//根據位置返回字符
//1.charAt(index)根據位置返回字符
var str = 'andy';
console.log(str.charAt(3));
//遍歷所有字符
for (var i = 0; i < str.length; i++){
console.log(str.charAt(i));
}
//2.charCodeAt(index)返回相應索引號的字符ASCll值, 目的:判斷用戶按下了哪個鍵
console.log(str.charCodeAt(0));
//3.str[index] H5新增
console.log(str[1]);
</script>
<script>
//有一個對象 來判斷是否有該屬性 對象['屬性名']
var o = {
age:18
}
if(o['age']){
console.log('裏面有該屬性');
} else {
console.log('裏面沒有該屬性');
}
//判斷一個字符'abcofoxyozzopp'中出現次數最多的字符,並統計出現次數
//核心算法:利用charAt()遍歷這個字符串
//把每個字符串都存儲給對象,如果對象沒有該屬性,就爲1,如果存在了就+1
//遍歷對象,得到最大值和該字符
var str = 'abcofoxyozzopp';
var o = {};
for(var i = 0; i < str.length; i++){
var chars = str.charAt(i); //chars字符串的每一個字符
if(o[chars]){ // o[chars]得到的是屬性
o[chars] ++;
} else {
o[chars] = 1;
}
}
console.log(o);
//2.遍歷對象
var max = 0;
var ch = '';
for(var k in o){
//k得到的是屬性名
//o[k] 得到的是屬性值
if(o[k] > max){
max = o[k];
ch = k;
}
}
console.log(max);
console.log('最多的字符串是' + ch);
</script>
(5)字符串的操作方法
concat(str1, str2, str3……) concat()方法用於連接兩個或多個字符串,拼接字符串,等效於+,+更常用
substr(start, length) 從start位置開始(索引號),length取的個數,重點記住這個
slice(start, end) 從start位置開始,截取到end位置,end取不到(他們倆都是索引號)
substring(start, end) 從start位置開始,截取到end位置,end取不到 基本和slice相同 但不接受負值
<script>
//字符串操作方法
//1.concat('字符串1','字符s串2' ....)
var str = 'andy';
console.log(str.concat('red'));
//2.substr('截取起始位置', '截取幾個字符');
var str1 = '改革春風吹滿地';
console.log(str1.substr(2, 2)); //第一個2 是索引號的2 從第幾個開始
//第二個2 是取幾個字符
</script>
<script>
//1.替換字符replace('被替換字符','替換爲的字符') 它只會替換第一個字符
var str = 'andyandy';
console.log(str.replace('a','b'));
//有一個字符'abcoefoxyozzopp'要求把裏面所有的o替換爲*
var str1 = 'abcoefoxyozzopp';
while(str1.indexOf('o') !== -1){
str1 = str1.replace('o', '*');
}
console.log(str1);
//2.字符串轉換爲數組 split('分隔符') 前面我們學過join 把數組傳換成字符串
var str2 = 'red, pink, blue';
console.log(str2.split(','));
var str3 = 'red&pink&blue';
console.log(str3.split('&'));
</script>