You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vartry_it=function(args){try{console.log(whatever);// ReferenceError sdsd is not defined}catch(e){console.log(e.name+" ",e.message);}}try_it();console.log(console);
并不会因为报错就不执行之后的代码,这体验还是不错的。
用js写一个fade的褪色动画
为什么要这样呢,之前一直是用css的来写这种收缩动画,直到后来,css越来越大(压缩后200kb),我抑郁了。yes i promise you can use let instead of var in js everywhere.
constmyMammal={name: 'Herb the Mammal',getName(){returnthis.name;},says(){returnthis.saying||'';},};constmyCat=Object.create(myMammal);myCat.name='mimi';myCat.saying='meow';myCat.purr=(n)=>{leti;lets='';for(i=0;i<n;i+=1){if(s){s+='-';}s+='r';}returns;};myCat.getName=()=>`${this.says}${this.name}${this.says}`;console.log(myCat,myMammal);
This 的4种调用模式
方法调用模式
这种通过this调用上下文对象的方法称为公共方法。this和上下文之间的绑定发生在它调用的时候。这种超级延迟的绑定使得this可以高度复用。
函数调用
当一个函数并非一个对象的属性的时候,那么他就被当作一个函数来调用,此时
构造器调用模式
js语言是一门基于原型继承的语言,可以从其他对象继承属性,该语言是无类型的。这和当前编程语言的主流风格不符合,但是如果你在函数调用之前加上
new
的话,那么背地里将会创造一个连接到函数prototype
成员的新对象,同时this会绑定到那个新对象上面。同时new
前缀也会改变return
语句的行为。一个函数创造的目的就是为了结合new前缀来调用,那么我们称之为构造函数,但是JavaScript语言精粹并不推荐这种构造方法。
Apply调用模式
因为js是一门函数式面向对象编程语言,所以函数拥有方法。
apply方法让我们构建一个参数数组传递给调用函数,他也允许我们选择this的值,apply接受2个参数,第一个是要绑定this的值,第二个就是一个参数数组。
今天之前一直有个疑问,为什么大佬们这么喜欢用try--catch
并不会因为报错就不执行之后的代码,这体验还是不错的。
用js写一个fade的褪色动画
为什么要这样呢,之前一直是用css的来写这种收缩动画,直到后来,css越来越大(压缩后200kb),我抑郁了。yes i promise you can use
let
instead ofvar
in js everywhere.the differnet between function and arrow function in javascript
arguments
获得参数模块模式
联级(jQuery)
返回this而不是undefined,这样就可以实现jquery的链式调用。这和函数式编程又有所不同。另一个返回的是data数组。用es6的class手写一个jQuery,实现链式调用,
实现一个最简单版本的jQuery链式调用,同时改变背景颜色,字体颜色,字体大小。
链式调用的效率,由于jQuery返回的是整个this.所以他是低效的。
原型与继承 (事实上,用浏览器打印出来就能对原型链继承看得一清二楚!)
函数化,
到目前为止,我们所看到的继承模式一个弱点就是没有隐私,因为所有属性都会被继承,即可见
识别变量的类型
首先想到的自然是
typeof
,但他的que缺陷也是显而易见的细想一下,为何不用
constructor
,,看图,没错,识别了[]和{},但是null和NaN,undefined报错,改良一下的最终解决方案式,唯一美中不足的是,不能识别undefined,请再配合isNaN一起使用,用来识别number和NaN的区别
顺便一提,
call
和apply
的效果是一样的JavaScript - 精华
JavaScript - 糟粕
==
,!=
, 为了不出bug,==
应该禁止使用with
, JavaScript提供了一个with语句,本意是快捷访问对象的属性,不过结果不可预料,应该禁止使用。下面的语句
with 在这门语言的出现,本身影响了JavaScript处理器的速度,他阻断了变量名词法作用域的绑定,他的本意是好的。
你可能会这样用
continue 语句跳到语句的顶部,我发现一段代码通过重构后移除了continue语句之后,性能得到了改善。
++
,--
语句,这个也禁止使用,建议用i+=1替换。通常用于执行硬件处理,但JavaScript不处理硬件,所以位运算符很慢
function 语句会发生被提升,
而var生命函数则不会。就我个人而言是建议使用var生命一个函数的。
一个语句不能以function开头,因为官方表示假定单词以function开头被认为是一个funciton语句。可以用如下做法避免他。
全书完。
The text was updated successfully, but these errors were encountered: