javascript对象方法简写的一个问题

话不多说,直接上代码:

let a = {
    s(){
        console.log('aa');
    }
};

let b = {
    s(){
        super.s();
        console.log('bb');
    }
};

Object.setPrototypeOf(b,a);

b.s();

这种方式可以正确的打印出

aa
bb

但如果这样:

let a = {
    s(){
        console.log('aa');
    }
};

let b = {
    s:function(){
        super.s();
        console.log('bb');
    }
};

Object.setPrototypeOf(b,a);

b.s();

就会报语法错误。

这里想问方法的简写和不简写有什么不同呢?因为以前自己没注意过

谢谢~

阅读 2.7k
2 个回答

这不是简写啊。前者是方法的写法,后者里边用 super 会有问题的吧。

自己看文档啦。

spec 明确说明了函数调用 super 会报错:

It is a Syntax Error if FunctionBody Contains SuperCall is true.

推荐问题