zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    JS时间框架之舍弃Moment.js拥抱Day.js
    快速理解Token,Cookie,Session
    一篇文章彻底弄懂CAS实现SSO单点登录原理
    debugging books
    debugging tools
    X64相关文章
    AMD developer
    kernel debugging
    Windows Kernel Security Training Courses
    windbg commands
  • 原文地址:https://www.cnblogs.com/jia-shu/p/14305635.html
Copyright © 2011-2022 走看看