Reflect
反射 Object.definedProperty
里面有部分Object的方法 放到了Reflect 功能基本一致
Proxy中能代理的方法 Reflect都可以实现
1 | const obj = {}; |
call、apply可以改变this指向
1 | const fn = function(a, b){ |
假设fn本身有一个apply方法
1 | const fn = function (a, b){ |
如何调取原型上的apply方法
1 | const fn = function (a, b){ |
其他的一些用法
1 | class XXX{ |
Symbol
ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。
1 | // 一般可以用作常量 |
其他功能:
元编程 可以改变js源代码的功能
1)instanceof 可以判断某个人是否是谁的类的实例
1 | let o = { |
现在就重写下这个行为
1 | let o = { |
和之前讲过的Symbol.iterator 在迭代的时候默认会调用一样
2)toString
1 | let obj = {a: 1}; // valueOf toString 面试可能会遇上 |
衍生对象
1 | // 衍生对象 |
newarr明明不是new出来的 怎么会是MyArray 和Array的实例呢 改变如下:
1 | class MyArray extends Array{ |