2.对象方法与BOM

对象及相关方法

1.Object对象

    <script>
        // 一.以字典形式定义
            var obj = {"name":"熊大","age":10}
            obj["sex"] = "雄性"     //添加/修改
            delete obj["age"]       //删除
            console.log(obj)        //获取

        // 二.以对象形式定义
            var obj2 = {
                name:"熊二",
                age:20,
            }
            // 1.添加/修改
            obj.skill = function(){console.log("咆哮")}
            obj.age = 33
            // 2.删除
            delete obj.age
            // 3.获取
            console.log(obj.name)   //熊二
            console.log(obj["name"])//熊二
            obj.skill()     //咆哮
            console.log(obj)    //{name: "熊大", sex: "雄性", skill: ƒ}

        // 三.自定义构造函数
        // 1.类比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}`)}
            }
        // 2.实例化对象
            var obj = new person("熊大",20,"公的")
            console.log(obj.name)
            obj.info()      //姓名:熊大,年龄:20
            console.log(obj,typeof(obj)) //person {name: "熊大", age: 20, sex: "公的", info: ƒ} "object"
            console.log(obj instanceof person) //true
    
        // 四.遍历对象
        // 1.方法一:
            for (var i in obj){
                if (i == "info"){
                    obj[i]()
                }else{
                    console.log(obj[i])
                }
            }

        // 2.方法二:with 直接获取成员值
            with(obj){
                console.log(name)
                console.log(age)
                console.log(sex)
                info()
            }
    </script>

2.json对象

    <script>
        var data = {'name':"光头强","age":22}
        // 1.json序列化成字符串,name强转双引号
            var res = JSON.stringify(data)
            console.log(res,typeof(res))  //{"name":"光头强","age":22} string
  
        // 2.json 反序列化,字典的键不能是单引号
            res = "{'name':'熊二'}"     //error 字典键是单引号不能反序列化
            res = '{"name":"光头强","age":22}'
            var data = JSON.parse(res)
            console.log(data,typeof(data)) //{name: "光头强", age: 22} "object"
    </script>

3.字符串对象的相关方法

    <script>
        // 1.获取字符串的长度: length
            var str = "hello world!"
            var res = str[-2] //undefined 字符串不支持逆向下标
            var res = str.length
            console.log(res)
       
        // 2.清除两侧的空白:trim [类比python中strip]
            var str = "  hello world  "
            var res = str.trim()
            console.log(res)
      
        // 3.获取首次出现的位置: indexOf [python的find] 找不到返回-1
            var str = "hello world"
            var res = str.indexOf("l") //2
            var res = str.indexOf("l",5,10) //9
            console.log(res) 
       
        // 4.获取最后一次出现的位置: lastIndexOf 找不到返回-1
            var str = "hello world"
            var res = str.lastIndexOf("l")
            console.log(res) //9
       
        // 5.连接字符串: concat [python的 os.path.join]
            var str = ""
            var res = str.concat("c:\","python\","javascript")
            console.log(res) //c:pythonjavascript
      
        // 6.大小写: toUpperCase,toLowerCase [python的 upper,lower]
            var str = "hello world"
            var res = str.toUpperCase()
            console.log(res) //HELLO WORLD
            var res = res.toLowerCase()
            console.log(res) //hello world
      
        // 7.截取字符串: slice
        // slice(开始值,结束值) 字符串切片 留头舍尾 从左到右 [支持逆向下标]
            var str = "hello world"
            var res = str.slice(2,5)
            var res = str.slice(-3) //从-3截取到最后
            console.log(res) 
     
        // 8.拆分字符串: split [python的split] 按某个字符拆分成数组
            var str = "hello world"
            var res = str.split(" ") //按空格拆分
            console.log(res) //["hello", "world"]
      
        // 9.search 正则匹配第一次找到索引的位置  找不到返回-1
            var str = "you can you up,no can no bb"
            var res = str.search(/c.*?n/) // 4
            var res = str.search(/up/) // 12
            console.log(res)
        
        // 10.match 返回正则匹配的数据
        // /正则表达式/+修饰符  修饰符: i 不区分大小写 , m 多行匹配 , g 全局匹配
            var str = "you can you up,no can no bb"
            var res = str.match(/c.*?n/) 
            // ["can", index: 4, input: "you can you up,no can no bb", groups: undefined]
            console.log(res)

        // 11.字符串替换 : replace
            var str = "you can you up,no can no bb"
            var res = str.replace("you","he") //替换第一个词
            console.log(res)
            var res = str.replace(/you/g,"he") //替换所有词
            console.log(res) //he can he up,no can no bb
        // 定义函数替换所有词
            function func(str,a,b){//string 原字符串 a 被替换的字符串 b 替换成什么
                while(str.indexOf(a) != -1){
                    str = str.replace(a,b)
                }return str
            }
            var res = func(str,"no","yes")
            console.log(res) //you can you up,yes can yes bb
    </script>

4.数组对象的相关方法

    <script>
        // 一.添加增数据
        // 1.push 从数组的后面插入元素
            var arr = [1,2]
            arr.push(11)
            console.log(arr) //[1, 2, 11]
        // 2.unshift 从数组的前面插入元素
            arr.unshift(22)
            console.log(arr) 
        // 3.concat 迭代追加数据 [python 的 extend]
            var arr = []
            var arr1 = [1,2,3]
            var arr2 = [4,5,6]
            var res = arr.concat(arr1,arr2)  //[1, 2, 3, 4, 5, 6]
            var res = arr.concat(1,2,3,4,5)  //[1, 2, 3, 4, 5]
            console.log(res)

        // 二.删除数据
        // 1.delete 删除,原位置用空保留 ,若获取值则是未定义undefined
            var arr = [1,2,3,4,5]
            delete arr[0]
            console.log(arr)  //[empty, 2, 3, 4, 5]
        // 2.pop 从后面删除 ,返回被删除掉的元素
            var arr = [1,2,3,4,5]
            var res = arr.pop()
            console.log(arr,res)  //[1, 2, 3, 4] 5
        // 3.shift 从前面删除,返回被删除的元素
            var arr = [1,2,3,4,5]
            var res = arr.shift()
            console.log(arr,res)  //[2, 3, 4, 5] 1
        // 4.splice 从指定位置往后删除/添加元素 返回被删除数据的数组
        // splice(开始位置,删除几个,[添加元素])
            var arr = [1,2,3,4,5]
            var res = arr.splice(2,2) //从第2下标开始,删除2个 [1, 2, 5]  [3, 4]
            var res = arr.splice(2,1,11,22) //删除一个添加两个 [1, 2, 11, 22] [5]
            var res = arr.splice(2,0,"aa","bb","cc") 
            //模拟python insert 插入 [1, 2, "aa", "bb", "cc", 11, 22] []
            console.log(arr,res)

        // 三.改查
            var arr = [1,2,3]
            arr[0] = 100             //改
            console.log(arr,arr[0])  //查 [100, 2, 3] 100

        // 四.数组的其他方法
        // 1.join 拼接字符串,与split拆分字符串是一对
            var arr = ["hello","world"]
            var res = arr.join(" ") //使用空格拼接
            console.log(res) //hello world
        
        // 2.数组反转 : reverse 原数组反转,返回的也反转
            var arr = [1,3,2,4]
            var res = arr.reverse()
            console.log(arr,res) //[4, 2, 3, 1]  [4, 2, 3, 1]
       
        // 3.截取数组的一部分 slice [列表切片]
        // slice(开始值,结束值) 字符串切片 留头舍尾 从左到右 [支持逆向下标]
            var arr = [1,2,3,4,5,6,7,8,9]
            var res = arr.slice(3,6)    //[4, 5, 6]
            var res = arr.slice(-3,-1)  //[7, 8]
            var res = arr.slice(-4)     //[6, 7, 8, 9] 从-4下标到最后 
            console.log(res)

        // 4.排序:sort 原数组排序
        // (1).sort 会把数据当成字符串,按照ASCII排序
            var arr = [1,2,13,15]
            var res = arr.sort()
            console.log(arr,res)  //[1, 13, 15, 2] [1, 13, 15, 2]
        // (2).当成正常的数据大小排序 冒泡排序,比值函数
        // 使用比值函数,会返回负值,零或正值  正=>交换 负=>不交换
            var arr = [1,2,13,15]
        // 1.普通函数
            function bizhi(a,b){
                if(a>b){
                    return 1
                }else{
                    return -1
                }
            }
            arr.sort(bizhi)
            console.log(arr) //[1, 2, 13, 15]
        // 2.匿名函数
            arr.sort(function(a,b){
                return a>b?1:-1
            })
            console.log(arr) //[1, 2, 13, 15]
        // 3.箭头函数
            arr.sort((a,b)=>{return a>b?1:-1})
            console.log(arr) //[1, 2, 13, 15]
    </script>

5.数学对象相关函数 Math

    <script>
        // Math.成员方法
        // 1.四舍五入: round
            var res = Math.round(3.5) // 4
            console.log(res)

        // 2.最大值:max , 最小值:min , 绝对值:abs
            var res = Math.max(1,3,-2,7) //7
            console.log(res)

        // 3.向上取整:ceil , 向下取整:floor
            var res = Math.ceil(1.1)  // 2
            console.log(res)

        // 4.幂运算: pow , 开方运算: sqrt
            var res = Math.pow(3,3) // 27
            var res = Math.sqrt(9)  // 3
            console.log(res)

        // 5.获取0~1的随机值 : random
            var res = Math.random()
            console.log(res)

        // 6.获取从m~n的随机整数值,实现python中的randrange效果
        // (1).先实现5~14之间的整数
            var res = Math.ceil( Math.random()*10 )     //从1到10
            var res = Math.ceil( Math.random()*10 )+4   //从5到14
        // (2).推到过程: 假设 m=5 , n=14 
            // var res = Math.ceil( Math.random()*10 )+4
            // var res = Math.ceil( Math.random()*(n-m+1) )+(m-1)
        // 结论:封装函数
            function randrange(m,n){
                return Math.ceil( Math.random()*(n-m+1) )+(m-1)
            }
            var res = randrange(0,10)
            console.log(res)
    </script>

6.时间对象相关方法 Date

页面实现时钟效果
<body>
    <div id="time"></div>
    <script>
        // 获取div标签的节点对象
        var obj2 = document.getElementById("time")
        function clock(){
            var obj = new Date() //创建时间对象
            console.log(obj) //Wed Jan 20 2021 22:22:13 GMT+0800 (中国标准时间)
            var year = obj.getFullYear() //年
            var month = obj.getMonth()   //月 从0开始 0=>1月份
            var date = obj.getDate()     //日
            var hour = obj.getHours()    //时   
            var minute = obj.getMinutes()//分
            var second = obj.getSeconds()//秒
            strvar = `现在的时间是:${year}年-${month+1}月-${date}日 ${hour}:${minute}:${second}`
        // 往div标签里插入内容: innerHTML
            obj2.innerHTML = strvar
        }
        window.setInterval(clock,1000) //定时执行多次任务 1000毫秒执行一次
    </script>
</body>

7.BOM模型 :控制浏览器

    <script>
        /*
        BOM => browser object model 控制浏览器
        整个浏览器中最大的对象是window窗口对象
        浏览器中所有的行为都由window窗口对象中的成员控制;
        所有成员都归属于window对象,所以window对象可以不写;
        */
        // 1.弹出提示框: alert
            window.alert("hehe")
        
        // 2.弹出确认取消框:confirm,返回状态 true/false
            var res = confirm("111")
            console.log(res)

        // 3.弹出等到用户输入框:prompt 确认返回输入内容,取消返回null
            var res = prompt("请输入账号:")
            console.log(res)

        // 4.关闭窗体:close 关闭整个子页面浏览器
            // close()

        // 5.打开窗体: open
            // open("http://www.baidu.com","_self")    //本页面跳转
            // open("http://www.taobao.com","_blank")   //新窗口跳转

        // 6.获取浏览器显示的宽度: innerWidth和高度: innerHeight
            console.log(innerWidth,innerHeight)

        // 7.定时器
        /*
            // 定时器是基于单线程的异步并发操作
            window.setInterval(函数,间隔时间(毫秒)) // 定时执行多次任务
            window.setTimeout(函数,间隔时间(毫秒))  // 定时执行一次任务  
            
            // 清除定时器
            window.clearInterval(id号)
            window.clearTimeout(id号)
        */
            // 1.创建定时器1
            var id1 = setInterval(func,1000)
            var count = 1
            function func(){
                console.log("当前数值:",count)
                if(count == 10){
                    clearInterval(id1)
                }
                count++
            }
    </script>
原文地址:https://www.cnblogs.com/jia-shu/p/14305635.html