mdn中文文档

您所在的位置:网站首页 mdn文档离线 mdn中文文档

mdn中文文档

#mdn中文文档| 来源: 网络整理| 查看: 265

Array数组,一种允许你存储多个值在一个引用里的结构。var myVariable = [1,'Bob','Steve',10]; 引用数组的元素只需:myVariable[0], myVariable[1], 等等.

发布工具: FTP 客户端

你还需要一种将文件从本地硬盘上传到远程Web服务器的方法。 为了做到这一点,你必须使用FTP客户端。

每个系统都包含一个FTP客户端作为文件管理器的一部分。 Windows资源管理器,Nautilus(一个常见的Linux文件管理器)和Mac Finder都包含该功能。 然而,人们更经常选择专门的FTP客户端,可以存储密码并且并行显示本地和远程目录。

如果你需要安装一个FTP客户端,这里有很多免费的选择:例如, 可以全平台使用的 FileZilla , windows上使用的WinSCP , Mac和 windows上都能使用的 Cyberduck ,还有很多)。

注意:还有其他方法可以在远程服务器上发布内容,如rsync和git,但并不像FTP那样简单,我们不会在这里讨论。(一定看git教程!!)

使用在线工具如 GitHub 或 Google App Engine

有一些工具能使你在线发布网站 :

GitHub 是一个“社交编程”网站。它允许你上传代码库并储存在 Git 版本控制系统里。 然后你可以协作代码项目,系统是默认开源的,意味着世界上任何人都可以找到你 GitHub 上的代码。去使用 GitHub,从中学习并且提高自己吧! 你也可以对别人的代码那样做! 这是一个非常重要、有用的社区,而且 Git/GitHub 是非常流行的 version control system — 大部分科技公司在工作中使用它。 GitHub 有一个非常有用的特点叫 GitHub pages,允许你将网站代码放在网上。Google App Engine

不像大部分其它主机服务,这类工具通常是免费的,不过你只能使用有限的功能。

使用像 Thimble 的基于 Web 的集成开发环境

有许多web应用能够仿真一个网站开发环境,允许你输入 HTML、CSS 和 JavaScript 然后显示代码的结果 —— 全部在一个标签页里!通常这些工具都很简单,对学习很有帮助,而且是免费的(基本功能),它们在一个独特的地址显示你提交的网页。不过,基础功能是很有限的,而且这些应用通常不提供如图像的内容的主机空间。

使用一下以下几种工具,看看你最喜欢哪一个:

JSFiddleThimbleJSBinCodePen  通过GitHub发布简单。

现在,让我们通过Github页面告诉你公布的你的代码是如此的

首先, 注册一个GitHub账号, 并确认你的邮箱地址。接下来,你需要创建一个新的资源库( repository )来存放你的文件。在这个页面上,在 Repository name 输入框里输入  username.github.io,username 是你的用户名。比如,我们的朋友 bobsmith 会输入  bobsmith.github.io。同时勾选 Initialize this repository with a README ,然后点击 Create repository。然后,将你的网页文件夹拖拽到你的资源库( repository ),再点击 Commit changes 。

提示: 确保你的文件夹有一个 index.html 文件.

现在将你的浏览器转到 username.github.io 来在线查看你的网站。比如,如果用户名为chrisdavidmills, 请转到 chrisdavidmills.github.io。

提示: 你的网站可能需要几分钟的时间才能投入使用。 如果它不能立即工作,你可能需要等待几分钟,然后再试一次。

想要了解更多,请看 GitHub Pages Help.

关于变量命名的规则

你可以给你的变量赋任何你喜欢的名字,但有一些限制。 一般你应当坚持使用拉丁字符(0-9,a-z,A-Z)和下划线字符。

你不应当使用规则之外的其他字符,因为它们可能引发错误,或对国际用户来说难以理解。变量名不要以下划线开头—— 以下划线开头的被某些JavaScript设计为特殊的含义,因此可能让人迷惑。变量名不要以数字开头。这种行为是不被允许的,并且将引发一个错误。一个可靠的命名约定叫做 "小写驼峰命名法",用来将多个单词组在一起,小写整个命名的第一个字母然后大写剩下单词的首字符。我们已经在文章中使用了这种命名方法。让变量名直观,它们描述了所包含的数据。不要只使用单一的字母/数字,或者长句。变量名大小写敏感——因此myage与myAge是2个不同的变量。最后也是最重要的一点—— 你应当避免使用JavaScript的保留字给变量命名。保留字,即是组成JavaScript的实际语法的单词!因此诸如 var, function, let和 for等,都不能被作为变量名使用。浏览器将把它们识别为不同的代码项,因此你将得到错误。

Note: 你能从词汇语法—关键字找到一个相当完整的保留关键字列表来避免使用关键字当作变量。

好的命名示例:

age myAge init initialColor finalOutputValue audio1 audio2

差的命名示例:

1 a _12 myage MYAGE var Document skjfndskjfnbdskjfb thisisareallylongstupidvariablenameman

现在尝试创建更多的变量,请将上面的指导泯记于心。

有用的字符串方法(记住,字符串本值是不可变的!,你要另外把变化后的值赋给新的变量)

数组(数组可变)

事件介绍

JavaScript事件代理

JavaScript 事件委托 以及jQuery对事件委托的支持

Event delegation

适合初学者的JavaScript面向对象

对象原型

JavaScript 中的继承

使用JSON 

客户端 Web API(未完!,翻译!)

从服务器获取数据

语法和数据类型

流程控制与错误处理

函数

箭头函数

delete

delete操作符,删除一个对象或一个对象的属性或者一个数组中某一个键值。语法如下:

delete objectName; delete objectName.property; delete objectName[index]; delete property; // legal only within a with statement

objectName是一个对象名,property 是一个已经存在的属性,index是数组中的一个已经存在的键值的索引值。

第四行的形式只在with声明的状态下是合法的, 从对象中删除一个属性。

你能使用 delete 删除各种各样的隐式声明, 但是被var声明的除外。

如果 delete 操作成功,属性或者元素会变成 undefined。如果 delete可行会返回true,如果不成功返回false。

x = 42; var y = 43; myobj = new Number(); myobj.h = 4; // create property h delete x; // returns true (can delete if declared implicitly) delete y; // returns false (cannot delete if declared with var) delete Math.PI; // returns false (cannot delete predefined properties) delete myobj.h; // returns true (can delete user-defined properties) delete myobj; // returns true (can delete if declared implicitly)

 

void

void 运算符运用方法如下:

void (expression) void expression

void运算符,表明一个运算没有返回值。expression是javaScript表达式,括号中的表达式是一个可选项,当然使用该方式是一种好的形式。

你可以使用void运算符指明一个超文本链接。该表达式是有效的,但是并不会在当前文档中进行加载。

如下创建了一个超链接文本,当用户单击该文本时,不会有任何效果。

Click here to do nothing

下面的代码创建了一个超链接,当用户单击它时,提交一个表单。

Click here to submit

 

in

in操作符,如果所指定的属性确实存在于所指定的对象中,则会返回true,语法如下:

propNameOrNumber in objectName

在这里 propNameOrNumber可以是一个代表着属性名的字符串或者是一个代表着数组索引的数值表达式,而objectName则是一个对象名。

下面的例子是 in 操作的常见用法。

// Arrays var trees = new Array("redwood", "bay", "cedar", "oak", "maple"); 0 in trees; // returns true 3 in trees; // returns true 6 in trees; // returns false "bay" in trees; // returns false (you must specify the index number, // not the value at that index) "length" in trees; // returns true (length is an Array property) // Predefined objects "PI" in Math; // returns true var myString = new String("coral"); "length" in myString; // returns true // Custom objects var mycar = {make: "Honda", model: "Accord", year: 1998}; "make" in mycar; // returns true "model" in mycar; // returns true

 

左值表达式

左值可以作为赋值的目标。

new

你可以使用new operator 创建一个自定义类型或者是预置类型的对象实例。用法如下:

var objectName = new objectType([param1, param2, ..., paramN]);

super

super 关键字可以用来调用一个对象父类的函数,它在用来调用一个类的父类的构造函数时非常有用,比如:

super([arguments]); // calls the parent constructor. super.functionOnParent([arguments]);

 

扩展语句

扩展语句符允许一个表达式在原地展开, 当需要多个参数 (比如函数调用时) 或者多个值(比如字面量数组) 。

例如:现在你有一个数组,你想创建一个新数组,并将刚才那个作为它的一部分,用array的字面语法是不够的,你不得不写一些代码实现它,比如用些push, splice, concat等等。但是用spread syntax就没问题了:

var parts = ['shoulder', 'knees']; var lyrics = ['head', ...parts, 'and', 'toes'];

类似的,扩展语句也可以用在函数调用的时候:

function f(x, y, z) { } var args = [0, 1, 2]; f(...args); 数字对象

内置的Number对象有一些有关数字的常量属性,如最大值、不是一个数字和无穷大的。你不能改变这些属性,但可以按下边的方式使用它们:

var biggestNum = Number.MAX_VALUE; var smallestNum = Number.MIN_VALUE; var infiniteNum = Number.POSITIVE_INFINITY; var negInfiniteNum = Number.NEGATIVE_INFINITY; var notANum = Number.NaN;

你永远只用从Number对象引用上边显示的属性,而不是你自己创建的Number对象的属性。

下面的表格汇总了数字对象的属性:

数字的属性

属性描述Number.MAX_VALUE可表示的最大值Number.MIN_VALUE可表示的最小值Number.NaN特指”非数字“Number.NEGATIVE_INFINITY特指“负无穷”;在溢出时返回Number.POSITIVE_INFINITY特指“正无穷”;在溢出时返回Number.EPSILON

表示1和比最接近1且大于1的最小Number之间的差别

Number.MIN_SAFE_INTEGERJavaScript最小安全整数.Number.MAX_SAFE_INTEGERJavaScript最大安全整数. 数字的方法 方法描述Number.parseFloat()把字符串参数解析成浮点数, 和全局方法 parseFloat() 作用一致.Number.parseInt()

把字符串解析成特定基数对应的整型数字,和全局方法 parseInt() 作用一致.

Number.isFinite()判断传递的值是否为有限数字。Number.isInteger()判断传递的值是否为整数。Number.isNaN()判断传递的值是否为 NaN. More robust version of the original global isNaN().Number.isSafeInteger()判断传递的值是否为安全整数。

数字的类型提供了不同格式的方法以从数字对象中检索信息。以下表格总结了 数字类型原型上的方法。

数字类型原型上的一些方法 方法描述toExponential()返回一个数字的指数形式的字符串,形如:1.23e+2toFixed()

返回指定小数位数的表示形式,

var a=123,b=a.toFixed(2)//b="123.00"

toPrecision()

返回一个指定精度的数字。如下例子中,a=123中,3会由于精度限制消失

var a=123,b=a.toPrecision(2)//b="1.2e+2"

Math的方法 方法描述abs()绝对值sin(), cos(), tan()标准三角函数;参数为弧度asin(), acos(), atan(), atan2()反三角函数; 返回值为弧度sinh(), cosh(), tanh()双曲三角函数; 返回值为弧度.asinh(), acosh(), atanh()反双曲三角函数;返回值为弧度.

pow(), exp(), expm1(), log10(), log1p(), log2()

指数与对数函数floor(), ceil()返回最大/最小整数小于/大于或等于参数min(), max()

 

返回一个以逗号间隔的数字参数列表中的较小或较大值(分别地)

random()返回0和1之间的随机数。round(), fround(), trunc(),四舍五入和截断函数sqrt(), cbrt(), hypot()

平方根,立方根,平方参数的和的平方根 

两个参数平方和的平方根

sign()数字的符号, 说明数字是否为正、负、零。clz32(),imul()

在32位2进制表示中,开头的0的数量.

返回传入的两个参数相乘结果的类C的32位表现形式

和其他对象不同,你不能够创建一个自己的Math对象。你只能使用内置的Math对象。

 

日期对象

JavaScript没有日期数据类型。但是你可以在你的程序里使用 Date 对象和其方法来处理日期和时间。Date对象有大量的设置、获取和操作日期的方法。 它并不含有任何属性。

JavaScript 处理日期数据类似于Java。这两种语言有许多一样的处理日期的方法,也都是以1970年1月1日00:00:00以来的毫秒数来储存数据类型的。

Date 对象的范围是相对距离 UTC 1970年1月1日 的前后 100,000,000 天。

创建一个日期对象:

var dateObjectName = new Date([parameters]);

这里的 dateObjectName 对象是所创建的Date对象的一个名字,它可以成为一个新的对象或者已存在的其他对象的一个属性。

不使用 new 关键字来调用Date对象将返回当前时间和日期的字符串

前边的语法中的参数(parameters)可以是一下任何一种:

无参数 : 创建今天的日期和时间,例如: today = new Date();.一个符合以下格式的表示日期的字符串: "月 日, 年 时:分:秒." 例如: var Xmas95 = new Date("December 25, 1995 13:30:00")。如果你省略时、分、秒,那么他们的值将被设置为0。一个年,月,日的整型值的集合,例如: var Xmas95 = new Date(1995, 11, 25)。一个年,月,日,时,分,秒的集合,例如: var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);. Date对象的方法

处理日期时间的Date对象方法可分为以下几类:

"set" 方法, 用于设置Date对象的日期和时间的值。"get" 方法,用于获取Date对象的日期和时间的值。"to" 方法,用于返回Date对象的字符串格式的值。parse 和UTC 方法, 用于解析Date字符串。

通过“get”和“set”方法,你可以分别设置和获取秒,分,时,日,星期,月份,年。这里有个getDay方法可以返回星期,但是没有相应的setDay方法用来设置星期,因为星期是自动设置的。这些方法用整数来代表以下这些值:

秒,分: 0 至 59时: 0 至 23星期: 0 (周日) 至 6 (周六)日期:1 至 31 月份: 0 (一月) to 11 (十二月)年份: 从1900开始的年数

例如, 假设你定义了如下日期:

var Xmas95 = new Date("December 25, 1995");

Then Xmas95.getMonth() 返回 11, and Xmas95.getFullYear() 返回 1995.

getTime 和 setTime 方法对于比较日期是非常有用的。getTime方法返回从1970年1月1日00:00:00的毫秒数。

例如,以下代码展示了今年剩下的天数:

var today = new Date(); var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // 设置日和月,注意,月份是0-11 endYear.setFullYear(today.getFullYear()); // 把年设置为今年 var msPerDay = 24 * 60 * 60 * 1000; // 每天的毫秒数 var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay; var daysLeft = Math.round(daysLeft); //返回今年剩下的天数

这个例子中,创建了一个包含今天的日期的Date对象,并命名为today,然后创建了一个名为endYear的Date对象,并把年份设置为当前年份,接着使用每天的毫秒数和getTime分别获取今天和年底的毫秒数,计算出了今天到年底的天数,最后四舍五入得到今年剩下的天数。

parse方法对于从日期字符串赋值给现有的Date对象很有用,例如:以下代码使用parse和setTime分配了一个日期值给IPOdate对象:

var IPOdate = new Date(); IPOdate.setTime(Date.parse("Aug 9, 1995")); 例子:

在下边的例子中,JSClock()函数返回了用数字时钟格式的时间:

function JSClock() { var time = new Date(); var hour = time.getHours(); var minute = time.getMinutes(); var second = time.getSeconds(); var temp = "" + ((hour > 12) ? hour - 12 : hour); if (hour == 0) temp = "12"; temp += ((minute < 10) ? ":0" : ":") + minute; temp += ((second < 10) ? ":0" : ":") + second; temp += (hour >= 12) ? " P.M." : " A.M."; return temp; }

JSClock函数首先创建了一个叫做time的新的Date对象,因为没有参数,所以time代表了当前日期和时间。然后调用了getHours, getMinutes以及getSeconds方法把当前的时分秒分别赋值给了hour, minute,second。

接下来的4句在time的基础上创建了一个字符串,第一句创建了一个变量temp,并通过一个条件表达式进行了赋值,如果小时大于12,就为 (hour - 12), 其他情况就为 hour, 除非 hour 为 0, 这种情况下,它会变成 12.

接下来的语句拼接了minute的值到temp后。如果minute小于10,条件表达式就会在minute前边加个0,其他情况下加一个分号。然后按同样的方式在temp后拼接上了秒。

最后,如果hour是12或者更大,条件表达式会在temp后拼接"P.M.",否则拼接"A.M." 。

 

国际化转换时间及日期(Intl.DateTimeFormat是根据语言来格式化日期和时间的对象的构造器)

国际化数字转换(Intl.NumberFormat是对语言敏感的格式化数字类的构造器类)

字符串

String对象方法

方法 描述 charAt, charCodeAt, codePointAt 返回字符串指定位置的字符或者字符编码。 indexOf, lastIndexOf 分别返回字符串中指定子串的位置或最后位置。 startsWith, endsWith, includes 返回字符串是否以指定字符串开始、结束或包含指定字符串。 concat 连接两个字符串并返回新的字符串。 fromCharCode, fromCodePoint 从指定的Unicode值序列构造一个字符串。这是一个String类方法,不是实例方法。 split 通过将字符串分离成一个个子串来把一个String对象分裂到一个字符串数组中。 slice 从一个字符串提取片段并作为新字符串返回。 substring, substr 分别通过指定起始和结束位置,起始位置和长度来返回字符串的指定子集。 match, replace, search 通过正则表达式来工作. toLowerCase, toUpperCase

分别返回字符串的小写表示和大写表示。

normalize 按照指定的一种 Unicode 正规形式将当前字符串正规化。 repeat 将字符串内容重复指定次数后返回。 trim 去掉字符串开头和结尾的空白字符。

多行模板字符串

模板字符串是一种允许内嵌表达式的String字面值. 可以用它实现多行字符串或者字符串内插等特性.

模板字符串使用反勾号 (` `) (grave accent) 包裹内容而不是单引号或双引号. 模板字符串可以包含占位符. 占位符用美元符号和花括号标识 (${expression}).

多行

源代码中插入的任何新行开始字符都作为模板字符串的内容. 使用一般的字符串时, 为了创建多行的字符串不得不用如下语法:

console.log("string text line 1\n\ string text line 2"); // "string text line 1 // string text line 2"

为了实现同样效果的多行字符串, 现在可以写成如下形式:

console.log(`string text line 1 string text line 2`); // "string text line 1 // string text line 2"

嵌入表达式

为了在一般的字符串中嵌入表达式, 需要使用如下语法:

var a = 5; var b = 10; console.log("Fifteen is " + (a + b) + " and\nnot " + (2 * a + b) + "."); // "Fifteen is 15 and // not 20."

现在, 使用模板字符串, 可以使用语法糖让类似功能的实现代码更具可读性:

var a = 5; var b = 10; console.log(`Fifteen is ${a + b} and\nnot ${2 * a + b}.`); // "Fifteen is 15 and // not 20."

更多信息, 请阅读 JavaScript reference 中的 Template strings。

索引集合类 (Indexed collections)

 

数组的方法(array methods)

Array 对象具有下列方法:

concat() 连接两个数组并返回一个新的数组。

var myArray = new Array("1", "2", "3"); myArray = myArray.concat("a", "b", "c"); // myArray is now ["1", "2", "3", "a", "b", "c"]

join(deliminator = ',') 将数组的所有元素连接成一个字符串。

var myArray = new Array("Wind", "Rain", "Fire"); var list = myArray.join(" - "); // list is "Wind - Rain - Fire"

push() 在数组末尾添加一个或多个元素,并返回数组操作后的长度。

var myArray = new Array("1", "2"); myArray.push("3"); // myArray is now ["1", "2", "3"]

pop() 从数组移出最后一个元素,并返回该元素。

var myArray = new Array("1", "2", "3"); var last = myArray.pop(); // myArray is now ["1", "2"], last = "3"

shift() 从数组移出第一个元素,并返回该元素。

var myArray = new Array ("1", "2", "3"); var first = myArray.shift(); // myArray is now ["2", "3"], first is "1"

unshift() 在数组开头添加一个或多个元素,并返回数组的新长度。

var myArray = new Array ("1", "2", "3"); myArray.unshift("4", "5"); // myArray becomes ["4", "5", "1", "2", "3"]

slice(start_index, upto_index) 从数组提取一个片段,并作为一个新数组返回。

var myArray = new Array ("a", "b", "c", "d", "e"); myArray = myArray.slice(1, 4); // starts at index 1 and extracts all elements // until index 3, returning [ "b", "c", "d"]

splice(index, count_to_remove, addElement1, addElement2, ...)从数组移出一些元素,(可选)并替换它们。

var myArray = new Array ("1", "2", "3", "4", "5"); myArray.splice(1, 3, "a", "b", "c", "d"); // myArray is now ["1", "a", "b", "c", "d", "5"] // This code started at index one (or where the "2" was), // removed 3 elements there, and then inserted all consecutive // elements in its place.

reverse() 颠倒数组元素的顺序:第一个变成最后一个,最后一个变成第一个。

var myArray = new Array ("1", "2", "3"); myArray.reverse(); // transposes the array so that myArray = [ "3", "2", "1" ]

sort() 给数组元素排序。

var myArray = new Array("Wind", "Rain", "Fire"); myArray.sort(); // sorts the array so that myArray = [ "Fire", "Rain", "Wind" ]

sort() 也可以带一个回调函数来决定怎么比较数组元素。这个回调函数比较两个值,并返回3个值中的一个:

例如,下面的代码通过字符串的最后一个字母进行排序:

var sortFn = function(a, b){ if (a[a.length - 1] < b[b.length - 1]) return -1; if (a[a.length - 1] > b[b.length - 1]) return 1; if (a[a.length - 1] == b[b.length - 1]) return 0; } myArray.sort(sortFn); // sorts the array so that myArray = ["Wind","Fire","Rain"] 如果 a 小于 b ,返回 -1(或任何负数)如果 a 大于 b ,返回 1 (或任何正数)如果 a 和 b 相等,返回 0。

indexOf(searchElement[, fromIndex]) 在数组中搜索searchElement 并返回第一个匹配的索引。

var a = ['a', 'b', 'a', 'b', 'a']; console.log(a.indexOf('b')); // logs 1 // Now try again, starting from after the last match console.log(a.indexOf('b', 2)); // logs 3 console.log(a.indexOf('z')); // logs -1, because 'z' was not found

lastIndexOf(searchElement[, fromIndex]) 和 indexOf 差不多,但这是从结尾开始,并且是反向搜索。

var a = ['a', 'b', 'c', 'd', 'a', 'b']; console.log(a.lastIndexOf('b')); // logs 5 // Now try again, starting from before the last match console.log(a.lastIndexOf('b', 4)); // logs 1 console.log(a.lastIndexOf('z')); // logs -1

forEach(callback[, thisObject]) 在数组每个元素项上执行callback。

var a = ['a', 'b', 'c']; a.forEach(function(element) { console.log(element);} ); // logs each item in turn

map(callback[, thisObject]) 在数组的每个单元项上执行callback函数,并把返回包含回调函数返回值的新数组(译者注:也就是遍历数组,并通过callback对数组元素进行操作,并将所有操作结果放入数组中并返回该数组)。

var a1 = ['a', 'b', 'c']; var a2 = a1.map(function(item) { return item.toUpperCase(); }); console.log(a2); // logs A,B,C

filter(callback[, thisObject]) 返回一个包含所有在回调函数上返回为true的元素的新数组(译者注:callback在这里担任的是过滤器的角色,当元素符合条件,过滤器就返回true,而filter则会返回所有符合过滤条件的元素)。

var a1 = ['a', 10, 'b', 20, 'c', 30]; var a2 = a1.filter(function(item) { return typeof item == 'number'; }); console.log(a2); // logs 10,20,30

every(callback[, thisObject]) 当数组中每一个元素在callback上被返回true时就返回true(译者注:同上,every其实类似filter,只不过它的功能是判断是不是数组中的所有元素都符合条件,并且返回的是布尔值)。

function isNumber(value){ return typeof value == 'number'; } var a1 = [1, 2, 3]; console.log(a1.every(isNumber)); // logs true var a2 = [1, '2', 3]; console.log(a2.every(isNumber)); // logs false

some(callback[, thisObject]) 只要数组中有一项在callback上被返回true,就返回true(译者注:同上,类似every,不过前者要求都符合筛选条件才返回true,后者只要有符合条件的就返回true)。

function isNumber(value){ return typeof value == 'number'; } var a1 = [1, 2, 3]; console.log(a1.some(isNumber)); // logs true var a2 = [1, '2', 3]; console.log(a2.some(isNumber)); // logs true var a3 = ['1', '2', '3']; console.log(a3.some(isNumber)); // logs false

以上方法都带一个被称为迭代方法的的回调函数,因为他们以某种方式迭代整个数组。都有一个可选的第二参数 thisObject,如果提供了这个参数,thisObject 变成回调函数内部的 this 关键字的值。如果没有提供,例如函数在一个显示的对象上下文外被调用时,this 将引用全局对象(window).

实际上在调用回调函数时传入了3个参数。第一个是当前元素项的值,第二个是它在数组中的索引,第三个是数组本身的一个引用。 JavaScript 函数忽略任何没有在参数列表中命名的参数,因此提供一个只有一个参数的回调函数是安全的,例如 alert 。

reduce(callback[, initialValue]) 使用回调函数 callback(firstValue, secondValue) 把数组列表计算成一个单一值(译者注:他数组元素两两递归处理的方式把数组计算成一个值)

var a = [10, 20, 30]; var total = a.reduce(function(first, second) { return first + second; }, 0); console.log(total) // Prints 60

reduceRight(callback[, initalvalue]) 和 reduce()相似,但这从最后一个元素开始的。

reduce 和 reduceRight 是迭代数组方法中最不被人熟知的两个函数.。他们应该使用在那些需要把数组的元素两两递归处理,并最终计算成一个单一结果的算法。

使用类数组对象(array-like objects)

一些 JavaScript 对象, 例如 document.getElementsByTagName() 返回的 NodeList 或者函数内部可用的 arguments 对象,他们表面上看起来,外观和行为像数组,但是不共享他们所有的方法。arguments 对象提供一个 length 属性,但是不实现 forEach() 方法, 例如:

Array的原生(prototype)方法可以用来处理类似数组行为的对象,例如: :

function printArguments() { Array.prototype.forEach.call(arguments, function(item) { console.log(item); }); }

Array的常规方法也可以用于处理字符串,因为它提供了序列访问字符转为数组的简单方法:

Array.prototype.forEach.call("a string", function(chr) { console.log(chr); }); 数组和正则表达式

当一个数组作为字符串和正则表达式的匹配结果时,该数组将会返回相关匹配信息的属性和元素。 RegExp.exec(), String.match() 和 String.split() 的返回值是一个数组。 使用数组和正则表达式的的更多信息, 请看 Regular Expressions.

带键的集合

使用对象

对象模型的细节

继承与原型链



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3