题目难度:★★★☆
①dom节点查找
✍描述
1.查找两个节点的最近的一个共同父节点,可以包括节点自身
📲输入描述:
oNode1 和 oNode2 在同一文档中,且不会为相同的节点
📰代码演示:
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body></body><script>// oNode1 和 oNode2 在同一文档中,且不会为相同的节点functioncommonParentNode(oNode1, oNode2) { while (true) { // oNode1.contains() 返回一个布尔值,来表示传入的节点是否为该节点的后代节点。if (oNode1.contains(oNode2)) returnoNode1oNode1=oNode1.parentNode } } </script></html>
②修改this指向
✍描述
封装函数 f,使 f 的 this 指向指定的对象
示例1
输入:无
输出:无
📰代码演示:
//改变this的指向有三种方法: call()、bind()、apply()//call// return function() {// return f.call(oTarget, ...arguments)// }//bind// function bindThis(f, oTarget) {// return f.bind(oTarget)// }//apply// function bindThis(f, oTarget) {// return function() {// return f.apply(oTarget, arguments)// }// }
③根据包名,在指定空间中创建对象
✍描述
根据包名,在指定空间中创建对象
输入描述:
namespace({a: {test: 1, b: 2}}, ‘a.b.c.d’)
输出描述:
{a: {test: 1, b: {c: {d: {}}}}}
📰代码演示:
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body></body><script>functionnamespace(oNamespace, sPackage) { letlist=sPackage.split('.'); lettmp=oNamespace; for (letkinlist) { if (typeoftmp[list[k]] !=='object') { tmp[list[k]] = {}; } tmp=tmp[list[k]]; } returnoNamespace; } </script></html>
④数组去重
✍描述
为 Array 对象添加一个去除重复项的方法
示例1
输入:
[false, true, undefined, null, NaN, 0, 1, {}, {}, ‘a’, ‘a’, NaN]
输出:
[false, true, undefined, null, NaN, 0, 1, {}, {}, ‘a’]
📰代码演示:
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><script>Array.prototype.uniq=function() { return [newSet(this)]; } </script></html>
⑤斐波那契数列
✍描述
用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
📰代码演示:
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body></body><script>functionfibonacci(n) { if (n<1) return-1; leta=1, b=1; for (leti=2; i<n; i++) { b=a+b; a=b-a; } returnb; } </script></html>
最后
下篇文章再见ヾ( ̄▽ ̄)ByeBye