网站制作过程,js源码下载从哪个网站能下载,拿自己爱人做网站,门户网站 布局FED16 简易深拷贝
描述 请补全JavaScript代码#xff0c;要求实现对象参数的深拷贝并返回拷贝之后的新对象。 注意#xff1a;
参数对象和参数对象的每个数据项的数据类型范围仅在数组、普通对象#xff08;{}#xff09;、基本数据类型中]无需考虑循环引用问题
!DO…FED16 简易深拷贝
描述 请补全JavaScript代码要求实现对象参数的深拷贝并返回拷贝之后的新对象。 注意
参数对象和参数对象的每个数据项的数据类型范围仅在数组、普通对象{}、基本数据类型中]无需考虑循环引用问题
!DOCTYPE html
htmlheadmeta charsetutf-8/headbodyscript typetext/javascriptconst _sampleDeepClone target {// 补全代码if(typeof target objecttarget!null){const cloneTargetArray.isArray(target)?[]:{};for(prop in target){if(target.hasOwnProperty(prop)){cloneTarget[prop]_sampleDeepClone(target[prop])}}return cloneTarget}else{return target}}/script/body
/htmlFED17 深拷贝
描述 请补全JavaScript代码要求实现对象参数的深拷贝并返回拷贝之后的新对象。 注意
需要考虑函数、正则、日期、ES6新对象需要考虑循环引用问题
!DOCTYPE html
htmlheadmeta charsetutf-8/headbodyscript typetext/javascriptconst _completeDeepClone (target, map new Map()) {// 补全代码if(targetnull) return targetif(typeof target!object) return targetconst constructortarget.constructorif(/^(Function|RegExp|Date|Map|Set)$/i.test(constructor.name)) return new constructor(target)if(map.get(target)) return map.get(target)map.set(target,true)const cloneTargetArray.isArray(target)?[]:{}for(prop in target){if(target.hasOwnProperty(prop)){cloneTarget[prop]_completeDeepClone(target[prop],map)}}return cloneTarget}/script/body
/htmlFED18 寄生组合式继承
描述 请补全JavaScript代码要求通过寄生组合式继承使Chinese构造函数继承于Human构造函数。要求如下
给Human构造函数的原型上添加getName函数该函数返回调用该函数对象的name属性给Chinese构造函数的原型上添加getAge函数该函数返回调用该函数对象的age属性
!DOCTYPE html
htmlheadmeta charsetutf-8/headbodyscript typetext/javascript// 补全代码function Human(name) {this.name namethis.kingdom animalthis.color [yellow, white, brown, black]}Human.prototype.getNamefunction(){return this.name}function Chinese(name,age) {Human.call(this,name)this.ageagethis.color yellow}Chinese.prototypeObject.create(Human.prototype)Chinese.prototype.constructorChineseChinese.prototype.getAgefunction(){return this.age}/script/body
/htmlFED19 发布订阅模式
描述 请补全JavaScript代码完成EventEmitter类实现发布订阅模式。 注意
同一名称事件可能有多个不同的执行函数通过on函数添加事件通过emit函数触发事件
!DOCTYPE html
htmlheadmeta charsetutf-8/headbodyscript typetext/javascriptclass EventEmitter {// 补全代码constructor(){this.events{}}on(event,fn){if(!this.events[event]){this.events[event][fn]}else{this.events[event].push(fn)}}emit(event){if(this.events[event]){this.events[event].forEach(callbackcallback())}}}/script/body
/htmlFED20 观察者模式
描述 请补全JavaScript代码完成Observer、Observerd类实现观察者模式。要求如下
被观察者构造函数需要包含name属性和state属性且state初始值为走路被观察者创建setObserver函数用于保存观察者们被观察者创建setState函数用于设置该观察者state并且通知所有观察者观察者创建update函数用于被观察者进行消息通知该函数需要打印console.log数据数据格式为小明正在走路。其中小明为被观察者的name属性走路为被观察者的state属性 注意Observer为观察者Observerd为被观察者
!DOCTYPE html
htmlheadmeta charsetutf-8/headbodyscript typetext/javascript// 补全代码class Observerd {constructor(name){this.namename;this.state走路;this.Observers[];}setObserver(Observer){this.Observers.push(Observer);}setState(state){this.statestate;this.Observers.forEach(observerobserver.update(this))}}class Observer {constructor(){}update(Observerd){console.log(Observerd.name正在Observerd.state)}}/script/body
/html