为什么对象原型中没有对象相关的方法?

时间:2019-07-14 08:16:50

标签: javascript object methods prototype

有些Object.valuesObject.keys这样的方法,但是为什么这些方法不在对象原型中?有充分的理由吗?

示例:

const user = { name: 'John', role: 'admin' };
const keys = user.keys() // instead of Object.keys(user);
const values = user.values() // instead of Object.values(user);

1 个答案:

答案 0 :(得分:1)

因为一切都是JavaScript中的对象。如果在对象的原型中添加方法,它将被继承为 everything ,因此它不能(或不应该,因为这样会隐藏原始方法)用作自定义名称方法。这意味着如果Object.prototype被许多方法污染,将使属性名称的选择更加困难:

  1..keys() // Did you expect this to work?