【问题标题】:Why are't Object related methods inside the Object prototype? [duplicate]为什么 Object 原型中没有与 Object 相关的方法? [复制]
【发布时间】:2019-11-23 07:49:26
【问题描述】:

Object.values fo 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);

【问题讨论】:

  • 因为那会和const user = {keys: function(){}}; user.keys()冲突。
  • IMO,尽可能保持prototype 对象干净,因为不是每个对象都会使用它们。

标签: javascript object methods prototype


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2012-12-01
    • 2015-06-09
    • 2013-10-18
    • 1970-01-01
    相关资源
    最近更新 更多