前端--js基礎2
阿新 • • 發佈:2021-01-21
一 Object物件
1.以字典的形式定義 [把name age 當成字典的鍵]
var obj = { "name":"張三", "age":10 }
新增/修改
obj["sex"] = "男性"
刪除
delete obj["sex"]
獲取
console.log(obj["name"],typeof(obj))
2.以物件形式定義
var obj2 = { name:"李四", age:80, eat:function(){ console.log("喜歡吃黃豆,喝涼水") } }
console.log(obj2,typeof(obj2))
新增/修改
obj2.age = 38 obj2.skill1 = function(something){ console.log(something) }
獲取
console.log(obj2.age) obj2.skill1("打豆豆")
刪除
delete obj.age
console.log(obj.age)
獲取時的注意點
var str = "name" console.log(obj2.name)// ok console.log(obj2.str) // undefined console.log(obj2[str]) // ok obj2["name"]
3.自定義建構函式
類比Python中定義類的寫法 this 等價於 self function Person(name,age,sex){ this.name = name this.age = age this.sex = sex this.info = function(){ console.log(`姓名:${this.name},年齡:#{this.age}`)} // 除非返回其他物件,否則都預設返回this本物件 return this //本物件 // return 1000 無效的數字,預設返回的是本物件 // return obj2 // 其他物件 } // 實列化物件 var obj1 = new Person('張銀',20,'野獸') console.log(obj1.sex) console.log(obj1.name) console.log(obj1 , typeof(obj1)) console.loh(obj1 instanceof Person)
4.遍歷物件
"""方法一 """ for (var i in obj1){ if(i=='info'){ obj1[i]() }else{ console.log(obj1[i]) } } """方法二 """ with(obj1){ console.log(name) console.log(age) console.log(sex) info() }
二json物件
var data = { 'name':"耿擇時", "age" : 88 } // js物件 => json格式的字串 [轉化為json字串時 , 強制轉化成雙引號] var res = JSON.stringify(data); console.log(res , typeof(res)); res = '{"name":"王文","age":18}' // success [反解json字串時,字串的鍵必須是雙引號] res = "{'name':'王文','age':18}" // error 字典的鍵不能是單引號 // json格式的字串 => js物件 var data = JSON.parse(res) console.log(data,typeof(data))
三 字串物件的相關方法
1.獲取字串長度 length
var string = "good good study day day up" var res = string.length var res = string[-1] //不支援逆向下標 undefined console.log(res)獲取字串長度
2.清除兩側的空白 trim [ python的strip ]
var string = " good good study day day up " console.log(string.trim())清除兩側的空白
3.獲取首次出現的位置 indexOf
var string = "good good study day day up study study " var res = string.indexOf("study") // 10 var res = string.indexOf("study",15,90) // 27 var res = string.indexOf("study1111111") // -1 console.log(res)獲取首次出現的位置
4.最後一次出現的位置lastIndexOf
var res = string.lastIndexOf("study") //33 var res = string.lastIndexOf("study",3,6) //-1 console.log(res) // 33最後一次出現的位置
5.連線字串 concat
var string = "" var res = string.concat("c:\\","3000soft\\","lianxi\\") console.log(res)連線字串
6.大小寫 toUpperCase toLowerCase
var string = "good good study day day up study study " var res = string.toUpperCase() console.log(res) // GOOD GOOD STUDY DAY DAY UP STUDY STUDY var res = res.toLowerCase() console.log(res)大小寫
7.擷取字串 slice
// slice(開始值,結束值) 字串切片 留頭舍尾 從左到右 [支援逆向下標] var string = "good good study day day up study study" var res = string.slice(3,9) var res = string.slice(-5,-1) var res = string.slice(-5) // 從-5擷取到最後 console.log(res)擷取字串
8.拆分字串 split
var string = "good good study day day up study" var res = string.split(" ") console.log(res)拆分字串
9.search 匹配第一次找到的索引位置
// 找不到資料直接返回-1 var string = "the shy is a big father" var res = string.search(/b.*?g/) var res = string.search(/ccc/) console.log(res)匹配第一次找到的索引位置
10.match 返回匹配的資料
// /正則表示式/修飾符 i : 不區分大小寫 m : 多行匹配 g:全域性匹配 var string = "the shy is a big father shy saby sccy" var string1 = string.match(/s.*?y/g) var string2 = string.match(/s\S*?y/g) var string3 = string.match(/shy/g) console.log(string3)返回匹配的資料
11.字串替換 replace
// 方法一 var string = "to be or not to be" var res = string.replace("to","three") console.log(res , typeof(res)) // 方法二 var res = string.replace(/to/g,"three") console.log(res , typeof(res)) // 方法三 console.log("<===============>") // string 原字串 a 被替換的字串 b 替換成什麼 function myreplace(string , a , b){ /* 一直做替換,直到 lastIndexOf 返回-1 代表替換完畢 */ while(string.lastIndexOf(a) != -1){ console.log("ok") string = string.replace(a,b) } return string } var res = myreplace(string,"to","four") console.log(res)字串的替換
乘法表 [js]
for(var i = 1;i<10;i++){ for(var j = 1 ; j<=i;j++){ var a = String(i * j) console.log(a.length,typeof(a)) // if(a.length == 1){ // a = ` ${i*j}` // }else{ // a = `${i*j}` // } a = a.length == 1?` ${i*j}`: `${i*j}` var res = `${i}*${j}=${a} ` document.write(res) } document.write("<br/>") }乘法表
四.陣列物件的相關方法
1.定義陣列
一.增
arr[0] = 100 arr[1] = 200 arr[2] = 300 arr[10] = 400 console.log(arr,typeof(arr))
(1) push 從陣列的最後插入元素[python 的 append]
var arr = [] arr.push(100) arr.push(200)從陣列的最後插入元素
(2) unshift 從陣列的前面插入元素 [python 的 insert]
arr.unshift(99) arr.unshift(98) console.log(arr,typeof(arr))從陣列的前面插入元素
(3) concat 迭代追加資料 [python 的 extend]
var arr = [] var arr1 = [1,2,3] var arr2 = [7,8,9] // 迭代追加多個數據,如果是可迭代性資料會一個個把其中的內容追加進去,返回新陣列 var res = arr.concat(arr1,arr2) var res = arr.concat(1,2,3,4) console.log(res)
二.刪
(1) delete刪除 原位置用空保留,獲取值是undefined
var arr = [100,200,300,400] delete arr[2] console.log(arr)delete刪除 原位置用空保留
(2) pop 從後面刪 , 返回刪除的元素
var arr = [100,200,300,400] var res = arr.pop() console.log(arr,res,"<=================>")pop 從後面刪 , 返回刪除的元素
(3) shift 從前面刪除
var arr = [100,200,300,400] var res = arr.shift() console.log(arr,res)從前面刪除
(4) splice 從指定位置往後刪除/新增
// splice(開始位置,刪除幾個,[新增幾個元素]) var arr = [100,200,300,400,"尤佳","黃常見","朱培峰","李琦"] // 效果1 , 從4下標開始刪,刪2個 var res = arr.splice(4,2) // 效果2 , 從4下標開始刪,刪2個,並且新增 王永娟,荷葉2個元素 var res = arr.splice(4,2,"王永娟","荷葉") // 效果3 , 模擬 python insert 操作 var res = arr.splice(4,0,"草配線") console.log(arr,res)從指定位置往後刪除
三.改查
var arr1 = [1,2,3] arr1[0] = 200 console.log(arr1,arr1[0])改查
四.陣列的其他方法
1.join 拼接字串 和split是一對
var arr = ["no","can","no","bb"] var res = arr.join("-") console.log(res)join 拼接字串 和split是一對
2.陣列反轉 reverse
var arr = [1,100,-3,4] var res = arr.reverse() console.log(res) console.log(arr)陣列反轉 reverse
3.擷取陣列的一部分 slice [python列表切片]
// slice(開始值,結束值) 字串切片 留頭舍尾 從左到右 [支援逆向下標] var arr = ["樑新宇","孫杰龍","趙瀋陽","李雅琪","王雨涵","石磊","呂菲菲"] var res = arr.slice(2,4) var res = arr.slice(-3,-1) var res = arr.slice(-2) console.log(res)擷取
4.sort 排序
// sort 會把資料當成字串,按照ascii編碼排序 var arr = [1,3,13,15,2] var res = arr.sort() console.log(res , arr)sort 排序
五.數學物件相關方法
1.四捨五入round
var res = Math.round(3.5) console.log(res) var res = Math.round(4.51) console.log(res)round
2.最大值 最小值 絕對值
//最大值 max var res = Math.max(1,2,3,4,100) console.log(res) //最小值 min var res = Math.min(1,2,3,4,100) console.log(res) //絕對值 abs var res = Math.abs(-100) console.log(res)max min abs
3.向上,下取整 floor 地板
//向下取整 floor 地板 var res = Math.floor(1.19) console.log(res) //向上取整 ceil 天花板 var res = Math.ceil(1.1) console.log(res)取值
4.冪運算 pow
var res = Math.pow(2,3)
console.log(res)
冪運算
5.開方運算 sqrt
var res = Math.sqrt(16)
console.log(res)
開平方
6.獲取從0到1隨機值 0<x<1
var res = Math.random()
console.log(res)
獲取從0到1隨機值
六BOM
/* BOM => browser object model 控制瀏覽器 整個瀏覽器中最大的物件是window視窗物件 瀏覽器中所有的行為都由window視窗物件中的成員控制; 所有成員都歸屬於window物件,所以window物件可以不寫; */
console.log(window) // 1.彈出提示框 // window.alert("112233") // 2.彈出確認取消框,返回狀態true / false // var res = window.confirm("111") // console.log(res) // 3.等待使用者輸入框 // var res = window.prompt("請輸入您的銀行卡密碼:") // console.log(res,typeof(res)) // 4.關閉窗體 // window.close() // 開啟窗體,本頁面跳轉 // window.open("http://www.baidu.com","_self"); // 開啟窗體,新視窗跳轉 // window.open("http://www.baidu.com","_blank","width=1px,height=1px"); // 獲取瀏覽器視窗顯示的寬度和高度 console.log(window.innerWidth) console.log(window.innerHeight) // 定時器 /* // 定時器是基於單執行緒的非同步併發操作 window.setInterval(函式,間隔時間(毫秒)) // 定時執行多次任務 window.setTimeout(函式,間隔時間(毫秒)) // 定時執行一次任務 // 清除定時器 window.clearInterval(id號) window.clearTimeout(id號) */ // 建立一個定時器1 // var id1 = window.setInterval(func,1000) // 建立一個定時器2 var id2 = window.setTimeout(func,1000) var count = 1 // 執行任務 當前函式可以預載入 function func(){ console.log("當前數值為:",count) if(count == 10){ // 殺死定時器1 // window.clearInterval(id1) // 殺死定時器2 window.clearTimeout(id2) } count++ } // console.log("程式碼執行結束 .... " , id1) console.log("程式碼執行結束 .... " , id2)具體方法
七.Date物件_檢視時間效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Date物件_檢視時間效果</title> <style> #time { width:600px; height:50px; border:dotted 1px green; text-align: center; line-height: 50px; background:black; color:red; border-radius: 30px; font-weight: bold; font-size:20px; } </style> </head> <body> <div id="time"></div> <script> // 獲取div這個標籤的節點物件 var obj2 = document.getElementById("time") console.log(obj2) function clock(){ var obj = new Date() console.log(obj) //獲取年 getFullYear var year = obj.getFullYear() console.log(year) //獲取月份 getMonth 月份的索引是從 0 開始的 var month = obj.getMonth() console.log(month) // 0 => 1月份 //獲取日期 getDate var date = obj.getDate() console.log(date) //獲取小時 getHours var hour = obj.getHours() console.log(hour) //獲取分鐘 getMinutes var minutes = obj.getMinutes() console.log(minutes) //獲取秒 getSeconds var seconds = obj.getSeconds() console.log(seconds) var abc = null; switch(month){ case 0: abc = "jan" break; case 1: abc = "Tu" break; default: abc = "沒有" break; } strvar = `現在的時間是:${year}年-${abc}月-${date}日 ${hour}:${minutes}:${seconds}` // 往div標籤中插入內容 innerHTML obj2.innerHTML = strvar // console.log(strvar) // document.write(strvar) } var id = window.setInterval(clock,1000) </script> </body> </html>日期時間程式碼