JS零碎知识<2>

原创 前端工程师_钱成 随笔 js知识 200阅读 2018-04-14 23:37:42 举报

一、函数节流(throttle):就是当事件触发之后,按照一个固定时间间隔执行函数。
一、函数去抖(debounce):就是当事件触发之后,按照一个固定时间间隔执行函数。假若在等待的时间内,事件又触发了重新开始计时。
来源:https://www.cnblogs.com/chenjinxinlove/p/6093246.html
三、new Date()的运行结果(????)
(1)在服务器端,参数和返回值均是格林尼治时间,比如nodejs下
(2)在客户端,参数和返回值均是本地时间,比如html下
四、继承的几种方式
Drag.prototype._proto_=EventEmitter.prototype;//这是更安全的继承方法,一般在Node里都是采用这种方式实现继承。IE不支持
Drag.prototype=new EventEmitter;//相对这种方式来说,上边的写法更安全
(1)构造函数继承:
在子类构造函数内部,把父类构造函数的this换成子类的this,并且给子类实例增加属性。
(2)原型链继承:
将父类的实例赋给子类的原型,并且给子类的原型增加属性。
(3)实例继承:
在子类构造函数内部,new父类的实例并用变量接收,并给该变量增加属性,再返回该变量。
(4)拷贝继承:
在子类构造函数内部,new父类的实例并遍历该实例的属性,复制到子类的原型上,再给该子类的原型增加属性。
(5)组合继承:
构造函数继承+原型链继承
(6)寄生组合继承:
构造函数继承+原型链继承(原型链所在的新构造函数为空)。
四、Promise的执行流程(箭头函数的this总是指向实例对象)
(1)定义一个函数,在这个函数里,首先给Promise类传进一个函数参数用来定义个性化的逻辑,这个函数参数传入两个函数参数作为成功的回调和失败的回调。
(2)定义的那个函数执行时,首先new出Promise类的实例,即Promise类里的代码执行。执行到Promise类的参数函数时遇上异步,于是用then为Promise类注册成功和失败的回调,然后继续执行异步,调用成功或失败的回调。
五、ejs模板中的四种表达式输出形式
在ejs模板中,通常会用下面四种方式在HTML中输出服务端的变量或表达式的值:
直接在<%%>中写表达式或变量。这种情况通常只是用来进行表达式计算或给变量赋值,不会有任何输出,被称作无缓冲的代码。<% code %>
在<%%>中通过=号输出变量或表达式的值。默认输出到页面中的内容会进行HTML转义。<%= code %>
在<%%>中通过-号输出变量或表达式的值。内容不经任何转义直接输出到页面上。<%- code %>
在结束标记%>之前添加-号,这样输出的内容会自动带有HTML标记的缩进。如:<% code -%> 或 <% -%> 或 <%= code -%> 或 <%- code -%>
来源,https://www.cnblogs.com/jaxu/p/5065338.html

八、运行结果

九、函数的创建方式
(1)函数声明: function sum1(n1,n2){ return n1+n2 };
(2)函数表达式:又叫函数字面量 var sum2=function(n1,n2){ return n1+n2; };
(3)函数构造法:参数必须加引号 var sum3=new Function('n1','n2','return n1+n2');console.log(sum3(2,3));//5
(4)自执行函数
十、函数的调用方式
(1)直接调用
(2)对象调用
(3)new调用
(4)call、apply调用
十一、原生js事件
(1)DOM0事件模型:直接在dom对象上注册事件名称
(2)DOM2事件模型:通过addEventListener和removeEventListener注册事件
十二、js 错误Error对象详解
来源:https://www.jb51.net/article/124210.htm
(1)概念
error,指程序中的非正常运行状态,在其他编程语言中称为“异常”或“错误”。解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描述信息。ECMAScript定义了六种类型的错误。除此之外,还可以使用Error构造方法创建自定义的Error对象,并使用throw语句抛出该对象。
A、ReferenceError:引用错误,例如变量没定义,console.log(b) // Uncaught ReferenceError: b is not defined
B、TypeError:类型错误,例如用数字调用函数方法,123() // Uncaught TypeError: 123 is not a function
C、SyntaxError:语法错误,例如变量名首字符为数字,var 1a // Uncaught SyntaxError: Unexpected number
D、RangeError:使用内置对象的方法时,参数超范围,例如[].length = -5 // Uncaught RangeError: Invalid array length
E、URIError:URI错误,例如decodeURI("%") // Uncaught URIError: URI malformed at decodeURI
F、EvalError:错误的使用了Eval,在ES5以下的JavaScript中,当eval()函数没有被正确执行时,会抛出evalError错误。
(2)错误处理,即使程序发生错误,也保证不异常中断的机制。

使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低;在try中,尽量少的包含可能出错的代码;无法提前预知错误类型的错误,必须用try catch捕获;finally可以省略;
(3)、抛出自定义错误
何时:如果函数的定义者,需要告知调用者使用过程中的错误;
如何:throw new Error("提示文字");

十三、js 如何实现sum(2,3)===sum(2)(3);所用思想:函数柯里化。
(1)高阶函数:输入一个函数或输出一个函数。
(2)柯里化函数:接受参数返回函数,再接受参数获取返回值。

来源1:http://blog.csdn.net/m0_37290635/article/details/56683233
来源2:https://www.cnblogs.com/chenjinxinlove/p/6093246.html
十四、普通函数与箭头函数对照
1、普通函数:var f=function(){return 5}
箭头函数:var f=()=>5
2、普通函数:var f=function(v){return 5}
箭头函数:var f=(v)=>5
3、普通函数:map(function(){return 5})
箭头函数:map(()=>5)
4、普通函数:map(function(v){return 5})
箭头函数:map(v=>5)
var 变量=(参数)=>函数体
十五、获取服务器端时间

十六、单向绑定与双向绑定
1、单向绑定:把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新。
2、双向绑定:如果用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定。
十七、观察者模式(发布-订阅模式)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
十八、高阶函数,把函数作为参数或者返回值的函数。
十九、person1.proto===person.prototype
1、proto:对象所在类的原型
2、prototype:类的原型
二十、封装深度克隆方法

来源:http://www.jb51.net/article/79707.htm
二十一、循环里放定时器

二十二、定时器里放循环

二十六、事件参数
<div onclick="myFunction(event,'event')"></div>
<div ng-click="myFunction($event, myInput.value)"></div>
abc.onclick=function(event){//这里的event是事件参数,一般情况下这里是没有参数的}
二十七、“=”
数学中的“=”,是过程的最终结果,其前面是过程,后面是结果。
编程中的“=”,是赋值,把其后的值赋值给前面的变量。
二十八、Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码。
二十九、pageX:文档(标准有)、screenX:显示器屏幕(都有)、 clientX:浏览器窗口(都有)、offsetX:事件源元素(IE有)
四十、HTML5新特性
Window.onpopstate()后退时触发
history.pushState()在浏览历史中添加记录
history.replaceState()在浏览历史中修改记录
四十一、EXMAScript6是一个标准,而Typescript实现了ECMAScript6,并且在此之上有进行扩展。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复