1:
(1)For each ... in:
Explanation:
语法:for each(variable in object){
statement
}
参数:
- varible
- 用来遍历属性值的变量,前面的
var
关键字是可选的.该变量是函数的局部变量而不是语句块的局部变量.
- object
- 该对象的属性值会被遍历.
- statement
- 遍历属性值时执行的语句. 如果想要执行多条语句, 请用(
{ ... }
) 将多条语句括住. - Examples:
var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};for each (var item in obj) {
sum += item;
} 结果为26;(2)For....in:Explanation:语法:
for (变量 in 对象)
{
在此执行代码
}Example:进行数组的遍历var array= new Array()
array[0] = "Saab"
array[1] = "Volvo"
array[2] = "BMW"for (var x in array)
{
document.write(array[x]) //for...in拿到的是该数组的下标
}(3)For....ofExplanation:语法:for (变量 of 对象)
{
在此执行代码
}Example:进行数组的遍历var array= new Array()
array[0] = "Saab"
array[1] = "Volvo"
array[2] = "BMW"for (var x in array)
{
document.write(x) //for...of拿到的是该数组的值
}2:了解关于Object的起源:JavaScript中的对象是什么?ES5中只给出一句话,对象是属性的集合。它只是一个盒子,它能做什么,取决于盒子里有什么。那么,属性是什么,一般看来,属性是一个key, value对,这个说法是对的吗?我们来剖析下属性。从一个程序员的角度来说,属性分为可通过JS调用的的和不可通过JS调用的。不可调用的叫做内部属性,那么可调用的我们对应着叫外部属性吧。内部属性是JS解释器实现各种接口的时候使用的算法中需要调用的属性,举个栗子,有个内部属性叫[[Put]],这是一个内部方法,传入属性名和值,它的作用就是为属性赋值。所以当我们使用a.age = 18的时候,实际就调用到了这个内部属性。而外部属性又分为两种,一种是数据属性,一种是访问器属性。上面的例一中,第二种方式给对象a添加了三个属性,其中name、_age是数据属性,age是访问器属性。当属性是数据属性的时候,属性是key、value对的说法好像是对的,但当属性是访问器属性的时候,这个说法好像有问题了,因为一个key对应的是一个setter和一个getter。所以,这个说法是错的?其实,属性不是我们看到的那样,单单就一个key对应一个数据或者一个setter加一个getter。属性还存在其他一些状态,我们称之为特性,无论是数据属性还是访问器属性,都存在四个特性。数据属性的特性为:[[Value]]、[[Writable]]、[[Enumerable]]、[[Configuration]],访问器属性的特性为:[[Get]]、[[Set]]、[[Enumerable]]、[[Configuration]]。其中[[Value]]、[[Get]]、[[Set]]相信已经很好理解了,[[Writable]]描述数据属性是否可被重新赋值,[[Enumerable]]描述属性是否可被for-in遍历,[[Configuration]]描述属性特性是否可被修改(一旦设置为false则不可以再修改此特性)。JS开放了三个接口用于设置和获取属性的特性,分别是Object.defineProperty、Object.defineProperties和Object.getOwnPropertyDescriptor。3:改后的标准函数:var materials = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'
];console.log(materials.map(function(materils){
return materils.length()
})4:关于Event Flow和事件机制1:Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行!
Flow 的各种类型检查特性,以及它能够如何帮助我们捕获错误并提高代码质量。 Flow 也可以通过在每一个文件的基础上“选择性进入”来使其易于上手的, 还有就是进行类型推断,让我们不用在代码中添加注解就能获得初步的实用反馈。