手写instanceof
instance作用是判断一个实例是否为其父类或祖先类型的实例
javascript
let myInstanceof = (target, origin) => {
while (target) {
if (target.__proto__ === origin.prototype) {
return true
}
target = target.__proto__
}
return false
}
let a = [1, 2, 3]
console.log(myInstanceof(a, Array))
instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype查找失败,返回 false
调用数组的map方法
javascript
const a = [1, 2, 3, 4]
const b = a.map((x) => x = x * 2)
console.log(b);
计数器
给定一个整型参数 n,请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n,每次调用它时会返回前一个值加 1 的值 ( n , n + 1 , n + 2 ,等等)。
javascript
/**
* @param {number} n
* @return {Function} counter
*/
var createCounter = function(n) {
return function() {
return n++
};
};
/**
* const counter = createCounter(10)
* counter() // 10
* counter() // 11
* counter() // 12
*/
这个问题旨在介绍 闭包(closures) 的概念。在 JavaScript 中,函数具有对在相同作用域以及任何外部作用域中声明的所有变量的引用。这些作用域被称为函数的 词法环境。函数与其环境的组合被称为 闭包。