
java script
-LZ-
可复制的代码 + 简洁的原理 = 提炼知识
展开
-
JS:数组扁平化(递归)
var arr = [1, 2, 3, [4,5], [6, [7, [8, [9, 10]]]]]let flatArray = []function flat(arr) { for (let item of arr) { //如果发现嵌套数组 if (item instanceof Array) { //flat(item)会返回一个数组,把结果数组与返回的数组结合 flatArray.concat(flat.原创 2021-09-14 17:18:18 · 470 阅读 · 0 评论 -
JS:DOM0,DOM2,IE通用事件侦听器
一、DOM0事件:onclick1. 添加事件:在行内标签内添加多个方法时会分别执行:<div onclick="fun1();fun2()"></div><--两个都会执行-->在script标签内添加多个方法只会执行最后面的:box.onclick = ()=>{};box.onclick = ()=>{}; //只会执行这一个2. 删除事件:box.onclick = null二、DOM2事件:EventList原创 2021-09-14 16:53:54 · 139 阅读 · 0 评论 -
JS:观察者模式
//定义被观察者class Subject{ constructor(name) { this.name = name; //观察者列表 this.observers = []; //被订阅的变量 this.state = "" } //添加观察者 attach(observer){ this.observers.push(observer) } //切换状.原创 2021-09-08 17:13:23 · 99 阅读 · 0 评论 -
JS:组合继承与寄生式继承
组合继承:子父类“拖家带口”function Parent(name) { this.name = name; this.duty = "rise child"}function Child(name, age) { Parent.call(this, name); this.age = age;}Child.prototype = new Parent() //这里构造了一个父类,因此父类会有name和dutylet child1 = new Child(原创 2021-08-24 22:01:29 · 101 阅读 · 0 评论 -
JS:new的原理
//第一个参数为构造原型,第二个参数为传参数组function myNew(Obj, ...args){ //创建一个空对象,这个空对象的原型和Obj一样 const obj = Object.create(Obj.prototype) //创建一个对象,这个对象使用Obj的构造方法加上传进来的参数构造的 const res = Obj.apply(obj, ...args) //如果构造方法返回对象,则返回此构造对象 if(res instanceof .原创 2021-08-26 00:01:08 · 77 阅读 · 0 评论 -
JS:instanceof的原理
//当a的__proto__等于b的prototype时返回true,否则返回falsefunction myInstanceof(a,b){ //获取a的__proto__ let proto = a.__proto__ //获取b的prototype let prototype = b.prototype //循环查找a的__proto__:直到a的__proto__等于b的prototype,说明找到了。或者a的__proto__等于null,说明找到头了.原创 2021-08-26 00:22:12 · 100 阅读 · 0 评论 -
JS:Object.assign的原理
//assign用来复制或合并对象,第一个参数是合并对象的目标,后面的参数是合并对象的源头Object.myassign = function(target, ...source){ //先判断target是否为null if(target == null){ return false } //设置res为targer res = Object(target) //遍历source,把里面的对象的元素添加到res里 source.f.原创 2021-09-04 09:56:34 · 151 阅读 · 0 评论 -
JS:Object.create的原理
//Object.create()会将参数对象作为一个新对象的原型,并返还这个空对象function myCreate(obj){ //声明一个新函数 function newObj(){} //将参数作为新对象的原型 newObj.prototype = obj //返回新实例对象 return new newObj()}...原创 2021-09-04 09:29:02 · 259 阅读 · 0 评论