展开语法 和 for-of 语句遍历 iterable对象 定义要遍历的数据 。Array 或 Map 是具有默认迭代行为的内置迭代器 。对象不是可迭代的,但是可以通过使用iterable和iterator协议使它们可迭代 。
在Mozilla文档中,如果一个对象实现了@@iterator方法,那么它就是可迭代的,这意味着这个对象(或者它原型链上的一个对象)必须有一个带有@@iterator键的属性,这个键可以通过常量Symbol.iterator获得 。
上述语句可能看起来有点冗长,但是下面的示例将更有意义:
文章插图
还可以使用 generator 函数来定制对象的迭代行为:
文章插图
7.打印的结果是什么知识点:
文章插图
for-in循环遍历对象本身的可枚举属性以及对象从其原型继承的属性 。可枚举属性是可以在for-in循环期间包含和访问的属性 。
【8个常见的JS经典问题】现在你已经掌握了这些知识,应该很容易理解为什么我们的代码要打印这些特定的属性:
文章插图
8.this 始终指向调用方法的对象在全局范围内初始化x时,它成为window对象的属性(不是严格的模式) 。看看下面的代码:
文章插图
可以断言:
window.x === 10; // truethis 始终指向调用方法的对象 。因此,在foo.getx()的例子中,它指向foo对象,返回90的值 。而在xGetter()的情况下,this指向 window对象, 返回 window 中的x的值,即10 。
要获取 foo.x的值,可以通过使用 Function.prototype.bind 将this的值绑定到foo对象来创建新函数 。
let getFooX = foo.getX.bind(foo);getFooX(); // 90
推荐阅读
- 7种让照片变清晰的PS方法
- PS:人像常用的磨皮方法
- 设计Banner常用的排版方式!
- 美国历史上有哪几位总统遇刺 美国林肯总统怎么被刺杀的
- 教你快速掌握Photoshop抠头发丝的技巧
- 淘宝直播录播总是被检测到违规 淘宝直播的一般违规如何处理
- 3个实用的配色技巧!
- 红茶的泡法你知道吗 七步泡红茶
- 怎样冲泡红茶 红茶的泡法和技巧
- 在Photoshop中消除红眼的最快方法