1.內置對象
js中的對象分為4種:內置對象、瀏覽器對象、自定義對象、DOM對象。
js提供多個內置對象:Math/Array/Number/String/Boolean...
對象只是帶有屬性和方法的特殊數據類型。
(1)如何學習一個方法
方法的功能、參數的意義和類型、返回值意義和類型、demo進行測試
2.Math對象
Math對象不是構造函數,它具有數學常數和函數的屬性和方法,都以靜態成員的方式提供
數學相關的運算來找Math種的成員
常用的屬性
Math.PI 圓周率
Math. 生成隨機數
Math.floor() 向下取整
Math.ceil() 向上取整
Math.round() 取整,四舍五入
Math.abs() 絕對值
Math.max() 最大值
Math.min() 最小值
Math.sin() 正弦
Math.cos() 余 弦
Math.pow() 求指數次冪
Math.sqrt() 求平方根
Date對象
創建date實例是用來處理時間和日期的。到毫秒
創建日期對象
Date()是構造函數
var date = new Date();
獲取到的是1970年1月1日至今的毫秒數
日期值
getTime():獲取1970年1月1日至今的毫秒數
valueOf();原始值,獲取1970年1月1日至今的毫秒數
getMilliseconds() // 毫秒!
getSeconds() // 返回0-59
getMinutes() // 返回0-59
getHours() // 返回0-23
getDay() // 返回星期幾 0周日 6周6
getDate() // 返回當前月的第幾天
getMonth() // 返回月份,***從0開始***
getFullYear() //返回4位的年份 如 2016
注意: 月份是從0開始的,0-11
星期是從周日開始的 周日為0 然后1 .2 .3 .4 .5 .6
Array對象
創建數組對象的兩種方式
1.字面量方式
2.new Array()
檢測一個對象是否是數組
instanceof 如果返回true就是數組,false是非數組
Array.isArray()如果返回true就是數組,false是非數組
valueOf() 返回數組對象本身
棧操作(先進后出)
push() 添加元素
pop() 刪除元素
隊列操作(先進先出)
shift() 刪除元素
unshift() 添加元素
排序方法
reverse() 翻轉數組
操作方法
concat() 把參數拼接到當前數組、 或者用於連接兩個或多個數組
slice(start,end)
從start開始截取元素,到end結束,包括start,不包括end,返回新數組,start,end是索引。會改變原始數組
splice() 1、從start開始截取元素,截取length個,,返回新數組,start是索引,length是個數
會改變元素的數組
位置方法
indexOf() 都是找位置 返回索引值 沒有找到返回 -1,第一次出現位置
lastIndexOf() 如果沒找到返回-1,元素最后一次出現的位置
上述方法只是查找順序不一樣 結果都是索引值
數組迭代方法
迭代的意思就是(不停的代換)
1.forEach()方法是用於調用數組的每個元素,並將元素傳遞給回調函數
可以拿到每個數組中的值,沒有返回值
array.forEach(function(currentValue, index))
currentValue 必需。當前元素
Index 可選。當前元素索引值
2、every() some()方法用於檢測數組所有元素是否都符合指定條件(通過函數提供)。
some(),every()方法的參數是一個回調函數,回調函數中的第一個參數是數組的元素,
第二個參數是數組的索引
some(),every()方法都會返回新的數組
公式: var flag1 = arr3.every(function (value, index) {
return value > 55;
})
console.log(flag1);
var flag2 = arr3.some(function (value, index) {
return value >= 88;
})
console.log(flag2)
every():判斷回調函數中的表達式是否全部滿足,如果滿足,返回值就是true,只要有一個不滿足就是false
some判斷回調函數中的表達式是否有一個滿足,如果至少一個滿足,返回值就是true
3、filter ()與map ()
filter()根據指定條件過濾元素,返回新數組 ;
map()數根據數學運算,返回新數組
filter():根據指定條件過濾元素,返回新數組
var new1 = arr.filter(function (value, index) {
return value >= 33;
})
console.log(new1);
map():根據數學運算,返回新數組
var new2 = arr.map(function (value, index) {
return Math.pow(value, 2);
})
清空數組
1.arr = [ ](注釋。里面是空的)
2.arr.length =0
3.arr.splice(0,arr.length)
數組轉化字符串
join()數組轉化為字符串,以參數分割
基本包裝類型
為了方便操作基本數據類型,JavaScript還提供了三個特殊的引用類型:String/Number/Boolean
下面代碼的問題?
s1是基本類型,基本類型是沒有方法來操作的
var s1 = 'zhangsan';
var s2 = s1.substring(5);
當調用s1.substring(5)的時候,先把s1包裝成String類型的臨時對象,再調用substring方法,最后銷毀臨時對象, 相當於:
var s1 = new String('zhangsan');
var s2 = s1.substring(5);
s1 = null;
創建基本包裝類型的對象
var num = 18; 數值,基本類型
var num = Number('18'); 類型轉換
var num = new Number(18); 基本包裝類型,對象
Number和Boolean基本包裝類型基本不用,使用的話可能會引起歧義。例如:
var b1 = new Boolean(false);
var b2 = b1 && true; 結果是什么
String 對象
字符串的不可變
var str = 'abc';
str = 'hello';
當重新給str賦值的時候,常量'abc'不會被修改,依然在內存中
重新給字符串賦值,會重新在內存中開辟空間,這個特點就是字符串的不可變
由於字符串的不可變,在大量拼接字符串的時候會有效率問題
創建字符串對象
字符串所有的方法,都不會修改字符串本身(字符串是不可變的),操作完成會返回一個新的字符串
1 字符方法
charAt() //獲取指定位置處字符
charCodeAt() //獲取指定位置處字符的ASCII碼
str[0] //HTML5,IE8+支持 和charAt()等效
2 字符串操作方法
concat() //拼接字符串,等效於+,+更常用
slice(start,end) //從start位置開始,截取到end位置,end取不到
substring(start,end) //從start位置開始,截取到end位置,end取不到
substr(start,length) //// 從start位置開始,截取length個字符
indexOf() //返回指定內容在元字符串中的位置,,如果沒有,返回-1;(從前往后,檢索到第一個就結束)
lastIndexOf() //返回指定內容在元字符串中的位置,,如果沒有,返回-1;(從后往前,檢索到第一個就結束)
trim() //只能去除字符串前后的空白
大小寫轉換方法
toUpperCase() //轉換大寫
toLowerCase() //轉換小寫
search()//方法用於檢索字符串中指定的子字符串,返回子字符串的起始位置
replace(old,new) //替換字符串替換字符串 new替換old
split() //分割字符串 返回的是一個數組。。數組的元素就是以參數的分割的