super()是否映射到引擎盖下的__proto__?

时间:2018-04-13 17:08:46

标签: javascript es6-class

我知道ES6中的类实际上是语法糖。 super()调用真的只是调用 proto 吗? (它是否映射到[[prototype]]对象?)

1 个答案:

答案 0 :(得分:3)

它不仅仅是那个。它还会记住方法的定义。

const example = {
    method() {
        return super.method();
    }
}

的语法糖
const example = {
    method() {
        return Object.getPrototypeOf(example).method.call(this);
    }
}

class Example {
    method() {
        return super.method();
    }
}

的语法糖
class Example {
    method() {
        return Object.getPrototypeOf(Example.prototype).method.call(this);
    }
}

对于构造函数中的super()调用,它同样在构造函数上使用Object.getPrototypeOf,但是does a bit more there

  

是否映射到[[prototype]]对象?

是。不是调用函数的对象的[[prototype]](this),而是定义函数的对象的[[prototype]]。