第十周web作业

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....of
Explanation:语法:
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 也可以通过在每一个文件的基础上“选择性进入”来使其易于上手的, 还有就是进行类型推断,让我们不用在代码中添加注解就能获得初步的实用反馈。

原文地址:https://www.cnblogs.com/yyh187/p/9925296.html