【问题标题】:What is the original definition of Object.create?Object.create 的原始定义是什么?
【发布时间】:2021-01-22 08:36:10
【问题描述】:
function Object.create(o) {
     function F() {} 
     F.prototype = o;
     return new F(); 
}

我假设这等同于 Object.create 的当前 ES6 实现。

  • 之前的版本是什么(由于new 关键字不存在,它明显改变了)?原来的那个。这是一个关于Javascript历史的事实问题,可以回答,我不明白为什么前面被删除了,所以我澄清一下。
  • 不带new的定义是否等同于带@的定义?
  • 如果更改了,是否还有其他内容(由 Good Parts 作者或官方提供)?例如ES5,如果它不等同于 ES6。

【问题讨论】:

  • 我不知何故对 Object.create 的另一个版本感到困惑,而且不记得函数是一个对象?
  • 只是 FWIW,是的,函数一直是 JavaScript 中的对象,尤其是当您通过 new 调用函数时,它们可以有一个 prototype 属性供使用。但也适用于Date.parseString.fromCharCode 等。

标签: javascript oop prototype


【解决方案1】:

之前的版本是什么(由于新关键字不存在,显然发生了变化)?

没有。 new 一直存在于 JavaScript 中。

不带new的定义是否等同于带new的定义?

Object.create 被添加到 ES5 的标准库之前,没有任何版本没有 newstandard version 直接使用给定的原型创建一个对象,而不必通过构造函数调用来完成,但结果是相同的,除了没有创建不必要的构造函数。

如果它改变了,还有其他的吗(由 Good Parts 作者或官方)?例如ES5,如果它不等同于 ES6。

它没有改变。标准版本是在 ES5(不是 ES2015/ES6)中添加的,此后没有发生实质性变化。 (规范的文本发生了变化,因为从那时起整个规范发生了相当大的变化,但所采取的基本步骤和结果是相同的。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    相关资源
    最近更新 更多