ES6-函数中new.target 方法

// 1. ECMAScript 5 中判断构造函数是否通过 new 关键字调用的写法function Person (fullName) {if (this instanceof Person) {this.fullName = fullName;} else {return new Person(fullName);}}let student = Person('孟天乐')// 2. ECMASript 6 引入一个 new.target 属性,当我们使用 new 操作符调用构造函数时,new.target 属性的值为构造函数,否则为 undefinedfunction Person (fullName) {if (typeof new.target !== 'undefined') {this.fullName = fullName;} else {throw new Error('必须通过 new 关键字来调用 Person。');}}let student = new Person('孟天乐');console.log(student)// 3. 除此之外,还可以检查 new.target 是否被某个特定构造函数所有调用。// 例如,Person 构造函数中的 new.target 属性的值被限定为 Person function Person (fullName, age) {if (typeof new.target === Person) {this.fullName = fullName;this.age = age;} else {throw new Error('必须通过 new 关键字来调用 Person。');}}function Dog (fullName, age) {Person.call(this, fullName, age)}let dog = new Dog('HeHe', 3)console.log(dog)// 4. 不能在函数外部使用 new.target,否则会报错function Person () {console.log(new.target)}// 下面代码会抛出错误:new.target expression is not allowed hereconsole.log(new.target) let student = new Person('崔景龙')

ES6-函数中new.target 方法相关推荐

  1. 为什么不能在init和dealloc函数中使用accessor方法

    前言 为什么不要在init和dealloc方法中调用getter和setter: Apple在Mac与iOS中关于内存管理的开发文档中,有一节的题目为:"Don'tUse Accessor ...

  2. php获取函数里参数吗,php函数中获取参数信息方法(记录)

    1.func_num_args() 返回传递给该函数参数的个数 function foo() { $numargs = func_num_args(); echo $numargs; //输出3 } ...

  3. 自己编写出来的函数在主函数中的使用方法

    1.函数声明 1.1函数声明格式(函数原型后面加上分号) int max(int x,int y);        //完整清晰,参数意义明确 int max(int,int);            ...

  4. 了解一下ES6: 函数简述深浅拷贝

    标准开头 今天我们来看一下ES6的函数部分知识 函数 函数初始值 有时候,函数的非必填参数,我们可以给予其默认值.保证程序完整不会出错 在早期,我们赋初始值可能是这样做的: // 早期ES5方法 fu ...

  5. 函数中使用sizeof(arr) / sizeof(arr[0])求数组长度不正确的原因

    参考文章:c中自定义函数通过sizeof来输出数组的长度为何不正确?[原创] 错误原因 我们可以使用sizeof(arr) / sizeof(arr[0])求数组长度,但是要注意:sizeof()函数 ...

  6. ES6/03/函数的定义方式和调用方式,函数内的this指向,改变函数中this指向的三个方法(call(),apply(),bind())

    函数的定义方式 1,自定义函数(命名函数) function fun(){}; 2,函数表达式(匿名函数) var fun =function(){}; 3,利用new Function( '参数1' ...

  7. es6箭头函数中this

    普通函数: $scope.$on('$stateChangeSuccess',function(){this.list = this.getList();}); 箭头函数: $scope.$on('$ ...

  8. ES6箭头函数中的this指向

    1箭头函数中的this (1)箭头函数中没有this : 这意味着 call() apply() bind() 无法修改箭头函数中的this (2)箭头函数中的this指向 :访问上一个作用域的thi ...

  9. 【ES6】es6数组中对象去重,数组对象去重方法总结---filter()与reduce()实践

    es6数组中对象去重 方法一: filter()与findIndex()给数组去重 1. filter()用法 2. findIndex()用法 3. 去重实战 方法二:reduce()去重 1. r ...

最新文章

  1. 使用Innobackupex快速搭建(修复)MySQL主从架构
  2. Oracle等待事件Enqueue CI:Cross Instance Call Invocation
  3. Linux 进阶笔记(一)
  4. 外部工具连接SaaS模式云数仓MaxCompute 实战—— 数据库管理工具篇
  5. 随笔_拉普拉斯变换的困惑点
  6. Spring Boot 模板引擎FreeMarker集成
  7. 第三十一篇 玩转数据结构——并查集(Union Find)
  8. 把lighttpd配置为系统服务
  9. *.dfm resource kept;file *.dfm resource discarded
  10. 百度Uditor富文本编辑器使用以及图片不显示问题
  11. 声音均衡器怎么调好听_均衡器调节(人声处理)
  12. table表格宽带width属性研究
  13. android 涨潮动画加载_这是迪士尼动画片《长发公主》中王国的原型,涨潮时才浮出海面...
  14. 实战! excel常用函数中lookup的用法
  15. 教你一招利用Python快速去除图片水印
  16. 动态水印跟踪去除_视频动态水印如何去除 视频中不定时出现的图片加文字广告如何尽量模糊处理...
  17. opencv微信二维码引擎的使用(for java)
  18. Sql Server REPLACE函数的使用;SQL中 patindex函数的用法
  19. post_thumbnail_html,wordpress get_the_post_thumbnail()不显示任何内容
  20. 2015年最受欢迎的十篇神秘的程序员漫画

热门文章

  1. Mybatis 批量操作总结
  2. thinkphp-无限分类下根据任意部门获取顶级部门ID
  3. slf4j与logback的结合使用
  4. [ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠
  5. 学习动态性能表(19)--v$undostat
  6. 实例:使用纹理对象创建Sprite对象
  7. android 升级数据库 修改表结构
  8. 《WinForm开发系列之控件篇》Item25 Lable(暂无)
  9. CVPR2021 FGVC8植物病理识别挑战赛,冠军方案解读
  10. 光流估计——从传统方法到深度学习