zoukankan      html  css  js  c++  java
  • 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()
    
    
    



  • 相关阅读:
    Python安装的库列表导出到文件和批量安装库文件
    Selenium之浏览器驱动下载和配置使用
    测试面试计算题--python
    软件质量模型
    用例要素和设计方法
    python的层级
    day 14:深浅copy,数据结构 ,函数,set集合,变量作用域、返回值
    day 8:open文件和with的使用
    day 1:计算机发展史和组成部分
    day 2:计算机的基础知识,编程语言分类
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13694025.html
Copyright © 2011-2022 走看看