首页 > 解决方案 > 为什么 Object 原型中没有与 Object 相关的方法?

问题描述

有像Object.valuesfo这样的方法Object.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);

标签: javascriptobjectmethodsprototype

解决方案


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

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

推荐阅读