Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript手册:`Array.prototype.includes()`vs.`Array.includes()`_Javascript_Documentation - Fatal编程技术网

Javascript手册:`Array.prototype.includes()`vs.`Array.includes()`

Javascript手册:`Array.prototype.includes()`vs.`Array.includes()`,javascript,documentation,Javascript,Documentation,新来的“noob”问题: Javascript在数组上有一个includes方法 它看起来像: Array.includes() 但当我去了解这种方法时,该页面上的标题(出于适当的技术原因,我意识到)是: Javascript手册中类似的内容让我一点也不喜欢该手册(唉,我对W3Schools的依赖比手册还多) 然而,我真的很想学习解释手册 因此,我的问题是:在文档中包含数组.prototype.includes()一词的意义是什么,而实际用法是:数组.includes()? (另外,如果有人对

新来的“noob”问题:

Javascript在数组上有一个
includes
方法

它看起来像:

Array.includes()
但当我去了解这种方法时,该页面上的标题(出于适当的技术原因,我意识到)是:

Javascript手册中类似的内容让我一点也不喜欢该手册(唉,我对W3Schools的依赖比手册还多)

然而,我真的很想学习解释手册

因此,我的问题是:在文档中包含
数组.prototype.includes()
一词的意义是什么,而实际用法是:
数组.includes()

(另外,如果有人对我如何提高对官方Javascript手册的理解提出建议,我将不胜感激。)

因此,我的问题是:在文档中包含
数组.prototype.includes()
一词的意义是什么,而实际用法是:
数组.includes()

重要的是实际使用看起来不像是
Array.includes()


Array.includes()如果文档中提到
Array.includes()
,您可以按如下方式键入它(示例):

相反,它说的是
Array.prototype.includes()
,这意味着它不是在
Array
类型本身上调用的,而是在它的实例上调用的。所以在这种情况下,你会写:

const numbers = [1, 2, 3];
numbers.includes(1);

JavaScript通常被描述为基于原型的语言,原型只是JavaScript中继承的工作方式

原型是什么意思

我们都同意JavaScript中几乎所有的东西都是对象(我说“几乎”,因为原语不是对象)酷吗? 好的,现在JS中的每个对象都有一个名为[[Prototype]]的内部属性,我所说的内部属性是指不能像访问JS对象的属性那样直接访问它

如果我们想知道我们创建的对象的原型,我们要么将对象的实例传递给
对象.getPrototypeOf
,要么通过对象的
\uuuu proto\uuu
属性

例如:

let myArray = [1,2,3,4];
console.log(myArray.__proto__)
// Expected output: Array []
如果您展开从上面的小代码片段中得到的结果对象,您将发现您所询问的includes方法,以及您在JS代码中创建的任何数组上可用的所有方法! 这是因为myArray和JavaScript中的所有数组都共享Array.prototype上定义的属性和方法

现在,如果您再次查看上面代码片段中生成的对象的方法,您将注意到一个名为构造函数的方法,它是在Array.prototype上定义的,就像includes和其他方法一样

这就是创建JavaScript数组对象实例时调用的函数

JavaScript数组对象是什么意思? 它是一个用于构建数组的全局JavaScript对象,它是Array.prototype.includes()中的数组(为了方便起见,您可以将其称为类,但在ES6发布之前,UUUUT类实际上并不存在……在此之前,JS中没有类)

因此,为了保持它的简单性和完整性,请将Array视为所有JS数组都是其实例的全局对象,并将Array。proto视为它的原型,它包装了所有实例共享的属性和方法


关于文档,能够阅读文档,并且对您所阅读的内容有相当的理解,这实际上是一件好事,所以我相信您很好

您可以将
.prototype
看作意味着可以在数组实例上调用
.includes()
方法。因此,如果您创建一个新数组,您可以对其使用
.includes()
方法。如果未指定
.prototype
,则该方法将充当“静态”方法,并可在数组类上调用。例如,将不起作用,但将起作用
const numbers = [1, 2, 3];
numbers.includes(1);
let myArray = [1,2,3,4];
console.log(myArray.__proto__)
// Expected output: Array []