• ES6 class——name属性与new.target属性


    name属性与new.target属性
    name属性: 1、类.name,输出的是类的名字。 2、如果是在类表达式中,类有名字,那么输出结果是类的名字;类没有名字的话,那么输出结果会是表达式中变量或者常量的名称。
                //name属性返回一个类的名字,在业务场景中基本上用不到的
                class Person{
                    
                }
                console.log(Person.name);  //打印结果为Person
                
                //如果有类名,就返回类名而不是变量名;没有类名就会取前面的变量
                const Humen = class P{
                    
                }
                console.log(Humen.name);  //打印结果为P
                
                
                
    
    
    



    new.target属性: 1、new.target只能在构造函数中访问,返回类本身,指向的是使用new来实例化一个类的时候,new关键字后面的那个类。【比如new Car(),那new.target指向的就是Car这个类】 ES6的类是ES5的语法糖,也就是ES5中模拟类的另一种写法,是提供的另一种更为方便的写法。 2、ES5的普通构造函数(function)中也可使用new.target,若没有使用new来实例化function,则会返回undefind。 校验函数:判断普通函数是否被当作构造函数调用,即是否使用了new来实例化,有两种方法: 1)new.target ! == Car(函数名) 2)!(this instanceof Car)【this指向调用函数所返回的对象】
                
                //new.target不可以直接访问,只能在类,或者Es5的构造函数中访问得到
                class Car{
                    constructor(){
                        console.log(new.target);  //new.target实际上指向的是new关键字后面的那个类(或者函数)
                    }
                }
                
                new Car();



    //在es5中,如果一个函数前面加上一个new关键字去进行调用的话,那这个函数就会被当做一个构造函数, //这也是在es5中去模拟一个类的核心,必须用构造函数模拟出一个类,把它作为一个类的入口 //语法糖 function Car1(){ //这是new.target比较重要的一个用法,在以前没有new.target的时候会使用instanceof去校验这个函数是否被当做构造函数去调用的 if(new.target !== Car1){ throw Error('必须使用new关键字调用Car') } } //当我们用new这个关键字去调用一个函数的时候,那么这个函数就会被作为构造函数进行调用 new Car1()


    //作为构造函数进行调用的时候,它的流程稍微跟普通的函数有点不太一样 function Car2(){ //函数是否被当做构造函数去进行调用 if(!( this instanceof Car2) ){ throw Error('必须') } } new Car2()
    
    
    



  • 相关阅读:
    邮件收件与草稿箱sql
    [转]全局变量与全局静态变量的区别:
    工作:8月份6-14号的工作初级经验(零碎) 关于传值id经常犯的错误
    网络婚礼之AFNetWorking3.0
    网络热恋之NSURLSession
    网络热恋之json解析
    网络热恋之SDWebImage
    网络热恋之XML解析
    网络&热恋NSURLConnection代理及GET¥POST请求
    网络邂逅&网络异步请求
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13694025.html
Copyright © 2020-2023  润新知