ES6中new.target和相关API

        1.new.target见解

            作用:new.target属性是用来检测函数或者构造方法是否是通过new关键字被调用的。

        注意:在通过new关键字被初始化的函数或者构造方法中,new.target返回的是一个指向构造方法或函数的引用。

                  在普通函数调用中,new.target的值是undefined。

// ES6方法,new.target  进行判断是否使用new关键字来调用
        function  Person(firstName,lastName){
            if(new.target === undefined){
                throw new Error('该函数必须使用new调用')
            }
            this.firstName = firstName;
            this.lastName = lastName;
            this.fullName = `${firstName}${lastName}`;
        }
        const p1 = new Person('千','里');
        // console.log(p1);

        // const p2 = Person('万','里');
        // console.log(p2);

        const p3 = Person.call('p1','李','白');
        console.log(p3);

       通过上述代码可以检测出有没有使用new关键字

       注意:改变this的指向,没有真正使用new也会检测出来。

         2.is()方法

             判断两个值是否相等,相当于===符号的比较

             注意:在ES6中is()  里NaN和0这两个除外,如

            console.log(NaN === NaN)  // false
            console.log(+0 === -0)  // true


            console.log(Object.is(NaN,NaN));    //true
            console.log(Object.is(+0,-0));      //false

        3. getOwnPropertyNames()方法

             用来获取对象的属性名,返回为一个数组,数组中的数据会枚举出来对象的属性。

             数组中不可枚举属性的顺序,如果带有数字类型的,则按照从小到大排列。如果是字符,则按照浏览器厂商来定义。

                

 const obj = {
             e : 1,
             a : 2,
             c : 3,
             b : 4,
             0 : 5,
             3 : 6,
             1 : 7
         }
        // // 对象的属性渲染顺序会按照浏览器厂商规定
         const arr = Object.getOwnPropertyNames(obj);
         console.log(arr);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值