javascript - 在 Javascript 中,Array.join 真的是 Array.prototype.join 吗?

标签 javascript

我想知道为什么即使在 Javascript 权威指南第 6 版中,O'Reilly,p. 149 - 150 ,它继续使用 Array.join()Array.concat()。应该改为 Array.prototype.join() 吗?

虽然 Chrome 没有定义 Array.join,但 Firefox 实际上有,并且可以通过 Array.join(array, string) 调用。区别可能很重要,因为一个是类方法,另一个是实例方法。我不知道这是为什么?

即使在核心 Javascript 引用文档中,这本书也继续使用 Array.join,但也许它意味着 Array.prototype.join,而且,它似乎暗示Array 有一个 length 属性,但它实际上也应该是 Array.prototype 的一个属性,并且是 Array.prototype。长度?

对了,火狐的Array.prototype.join的实现好像可以

Array.prototype.join = function(s) {
    return Array.join(this, s);
}

但我没有看到通常会这样做(定义一个可以在实例上调用的类方法)。

最佳答案

FireFox 将一个版本 的原型(prototype)方法放在相关的构造函数上。

这不是 ECMAScript 标准的一部分,而是 ECMAScript 的特定 JavaScript 超集的一部分。

这本书应该做出这种区分,除非这本书专门讨论 JavaScript 扩展。

请记住 JavaScript !== ECMAScript。 ECMAScript 是语言标准,而 JavaScript 是该标准第 3 版的实现,并包含该标准未指定的功能超集。

关于javascript - 在 Javascript 中,Array.join 真的是 Array.prototype.join 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771356/

相关文章:

javascript - 将 videojs 与 youtube.js 一起使用

javascript - <input> 范围 slider 不重置颜色值

javascript - JavaScript生成器捕获错误

javascript - Angularjs-ui-router、ui-view 不起作用。

Javascript 通过单击我的按钮来更改我的对象的值,但是再次单击时,它不会切换回来

javascript - 为什么来自 Promise `.then` 方法的回调是一种反模式

javascript - document.getElementsByTagName ("*") 或 document.all

javascript - Cypress - 从函数设置全局变量

php - PHP 中的警报输入名称

javascript - 通过 ClientListerner 以编程方式触发/模拟点击事件