理解settimeout的定义setTimeout(()=>{task()},3000)sleep(10000000)流程:task()进入EventTable并注册,开始计时。执行sleep函数很慢,很慢,计时还在继续。3秒到,计时事件超时完成,task()进入EventQueue,但是sleep太慢了,还没执行完,只好等待。sleep终于执行完了,task()终于从EventQueue进入主线程执行。事件委托通过将事件绑定到父dom来减少事件对象占用的内存,然后在父事件中使用traget指向子容器节点。(也就是把点击事件绑定到ul上,然后根据li的属性实现不同的li点击效果)jsonp可以使用跨域src请求,所以可以使用srcipt请求后端提供的json来获取数据,并告诉后端回调事件的名字,将返回的数据用回调函数的名字包裹起来,这样返回的数据就作为回调函数的参数传回来,可以执行对应的callbackssr在前端js。页面通过服务器生成一个html字符串,然后发送给浏览器。访问路由时可以直接获取带有ssr的htmlangular9脚手架https://github.com/Ismaestro/...参数详解https://www.cnblogs.com/laixi...webview优化提前加载,请求数据提前加载webview并隐藏,消耗内存,切换webview时需要清除浏览痕迹,造成内存泄漏设置webview缓冲池,从缓冲池加载,不用时销毁,消耗较大内存,但是无需清除浏览痕迹。客户端应用程序有助于请求一些数据以减少webview内存消耗。原型链实例的__proto__指向其构造函数的原型(原型对象)。每个对象都有一个原型对象(_proto_),原型对象的_proto_依次往上走。最后,它指向空。Null没有原型。它是原型链的最后一部分。Object.create()相当于在calss中扩展继承。a=Object.create(b)表示a继承了b的属性。访问对象的一个??属性keyvaraa={key:123},查询顺序为:aa=>aa._proto_=Object.prototypefunction,数组为对象实例,原型为Object//例如:(arrayBothinheritfromArray.prototype)varbb=[1,2,3]bb.__proto__===Array.prototype//trueArray.prototype.__proto__==Object.prototype//trueObject.prototype.__proto__===null//truethis指向this并且this总是指向一个对象;这一点完全取决于函数调用的位置;当调用该函数时,this将永久绑定到调用的位置。varo={prop:33,f:function(){returnthis.prop;}};//执行window.f=o.f;//此时window.f中的this绑定到window,而在o.f中this绑定到o;varaa=55;window.f()//55o.f()//33apply和call可以修改this调用的点,apply是Function.prototype的一个方法//简单理解apply,call和bindA。call(B)//相当于B可以继承A的属性varaa={key:123}functionfu(){returnthis}fu.call(aa)//使用aa执行returnthis,thenget{key:123}fu.apply(aa)//{key:123}//注意:箭头函数不能使用call和apply来改变this的指向varfu2=()=>{returnthis;}fu2.call(aa)//window//使用bind将创建一个与原始函数具有相同函数体和作用域的函数//并且这将永久绑定到bind的第一个参数,无论它如何调用later不会改变这个点vargg=fu.bind({key:"111"})gg()//{key:"111"}gg.bind({key:"222"})gg()//{key:"111"}箭头函数的this:this在创建时总是指向词法作用域内的this,不会被修改varobj={fu1:()=>{console.log(this)},fu2:function(){console.log(this)}}obj.fu1()//windowobj.fu2()//obj//闭包varobj={arrowFn:function(){return()=>{控制台.日志(这);}}}varfun=obj.arrowFn()//将返回箭头函数分配给funfun()//obj
