JavaScript 练习题

函数

bind, call, apply

示例一

1
2
3
4
5
6
7
8
const person = { name: "Lydia" };

function sayHi(age) {
console.log(`${this.name} is ${age}`);
}

sayHi.call(person, 21);
sayHi.bind(person, 21);

sayHi.bind(person, 21) 行为只是将函数作用域绑定到了 person 但是

并不会立即执行,它返回了一个该函数的副本。

DOM 事件

事件触发阶段

code

点击 p 输出结果?

1
2
3
4
5
<div onclick="console.log('div')">
<p onclick="console.log('p')">
Click here!
</p>
</div>

answer

默认情况下,事件是冒泡的,即先 p 后 div,

如果在定义事件的时候使用了 useCapture 参数,事件则会是捕获类型,结果则相反。

作用域

全局执行上下文干了啥?

  1. 创建全局对象
  2. 绑定 this 对象

object & set

object 重复属性

code

1
2
const obj = { a: "one", b: "two", a: "three" };
console.log(obj);

answer

{ a: 'three', b: 'two' }
undefined

comment

可以用 var 的声明特性来理解这个,

var a = 0; var a = 10

声明只会有一次,且取第一次声明的地方,结果取最后一次赋值。

object.hasOwnProperty & set.has

code

1
2
3
4
5
6
7
const obj = { 1: "a", 2: "b" }
const set = new Set([1, 2, 3])

console.log(obj.hasOwnProperty('1')) // ??
console.log(obj.hasOwnProperty(1)) // ??
console.log(set.has('1')) // ??
console.log(set.has(1)) // ??

本文标题:JavaScript 练习题

文章作者:ZhiCheng Lee

发布时间:2019年06月17日 - 17:32:57

最后更新:2019年06月17日 - 17:36:10

原始链接:http://blog.gcl666.com/2019/06/17/javscript_exercises/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%