初识ES6

1、let 和const

​ (1)let:用来声明块级变量。var声明的变量会出现作用域的提升(会出现变量的污染)

​ (2)const:声明的常量必须要初始化

​ (3)const声明的对象:常对象

​ a、可以修改对象的属性值,但是不能修改对象本身

const obj = { 
    name:'张三',
    age:25
}
obj.name = '李四'  //正确的:修改对象的属性
obj = {} // 错误的:不能改变对象

 

​ b、冻结对象:不能修改对象的属性。使用Object.freeze(对象名)

const obj = {
            name:'李四',
            age: 25
        }
console.log(obj)
Object.freeze(obj) //冻结对象obj,就不能修改obj的属性
obj.name = '王五'
console.log(obj)

​ c、冻结嵌套的对象

const p = {
            name:'李四',
            age: 25,
            family:{
                father:'李世民',
                mother:'长孙皇后'
            }
        }
    //定义一个冻结函数
    function fun(obj){ //函数的参数是对象
        //1.冻结对象:参数接收的对象
        Object.freeze(obj)
        //2.使用for...in循环遍历对象的属性
        for(let key in obj){ //key = 'mother'
            //2.1 hasOwnProperty用来判断对象是否包含给定的属性。typeyof用来判断数据类型
            if(obj.hasOwnProperty(key) && typeof obj[key] === 'object'){// obj['mother'] -- string
                fun(obj[key])
            }
        }
    }
    fun(p)
    p.family.father = '李建成'
    console.log(p)

2、构造函数:

1)作用:初始化对象(是对象的模型),所有的对象都是用这个模型造出来的

​ (2)this:指向由构造函数创建的对象(代表当前对象)

​ (3)对象:是属性和行为的结合体

​ 属性:是对象的静态特征(成员变量)

​ 行为:是对象的动态特征(函数 / 方法)

<script>
        /*需求:定义构造函数Student,属性分别是:id、name、html、css、JavaScript
             (1)创建5个Student对象,把这5个对象存入数组
             (2)找出总成绩最高的对象
             (3)根据javascript成绩对数组进行降序排序
        */
       //1.定义构造函数
        function Student(id,name,html,css,javascript){
            //1.1 定义属性:this后的是属性
            this.id = id
            this.name = name
            this.html = html
            this.css = css
            this.javascript = javascript
            //1.2 定义方法:求对象的总成绩
            this.total = function(){
                return this.html + this.css + this.javascript
            }
        }
        //2.创建对象,然后将对象存入数组
        let s1 = new Student(101,'贾宝玉',78,85,95)
        let s2 = new Student(102,'贾元春',65,88,98) 
        let s3 = new Student(103,'贾探春',75,65,88)
        let s4 = new Student(104,'贾迎春',90,80,92)
        let s5 = new Student(105,'贾惜春',72,78,86)
        let arr = [s1,s2,s3,s4,s5] //arr数组称为对象数组
        console.log(arr)
        //3. 找总成绩最高的
        let max = arr[0]  //假定数组中第一个对象的总成绩最高
        for(let i=1;i<arr.length;i++){
            if(arr[i].total() > max.total()){
                max = arr[i]
            }
        }
        console.log("总成绩最高的是:",max)
        //4.按JavaScript的成绩进行降序排序
        for(let i=0;i<arr.length;i++){
            for(let j=0;j<arr.length-1;j++){
                if(arr[j].javascript < arr[j+1].javascript){
                    let t = arr[j]
                    arr[j] = arr[j+1]
                    arr[j+1] = t
                }
            }
        }
        console.log(arr)
    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值