!!obj,将其强制转换为bool类型
!obj,取相反的bool类型
3.=== 与 ==区别
=== 是严格相等,不会进行类型转换,而 == 是不严格相等,会进行类型转换。有些js的书中,建议开发人员永远不要用 == 或者 != 。
但是jquery源码中,有用到“==”或者“!=”的情况 —— 判断 undefined 和 null 的时候(undefined == null为true)。
4.检测obj是否为window对象
5.|| 与 && 用法技巧
经典实例:
结果:
7.判断是否为数值
8.判断是否为空对象
9.检测对象类型
使用hasOwnProperty()方法可以检测一个属性是存在与实例,还是存在于原型中。这个方法从Object继承,只在给定属性存在于对象实例中时,才会返回true。
2.通过instanceOf检查this是否为构造函数的一个实例
4.利用闭包,实现单例模式,保证构造函数只实例一次
5. 利用空对象F,实现对象继承,效率最高
6. 构造函数设置return obj对象,会导致对象与原型链断掉
理解这个问题,先理解一个概念,通常我们用new Object(),其实可以理解为隐式的做了三件事情:
我们执行打开chrome控制台,发现通过Parent(),new Parent()方法生成的对象原型链都断裂了。
场景二:我们把对象的属性挂载在this上,也达不到想要的结果,构造函数如下:
chrome控制台结果:
场景三:我们更大胆一点,直接让that成一个对象,返回that,观察new Parent(),出来的对象,是否拥有prototype上的方法
chrome控制台,可以看到new Parent(),实例返回的对象构造函数设置的返回对象,没有继承原型的prototype方法
思考??:如果构造函数返回Array,null,通过new 实例会出现什么情况呢?
场景四:构造函数中不返回对象,返回字符串
chrome控制台:发现出来的结果,继承了原型链
通过以上四个场景,我们得出结论:
1.构造函数里面,我们设置return 返回对象或者数组,通过new实例时,会导致原型链断裂
2.构造函数里面,我们设置return 返回字符串或者null,或者alert(),通过new实例时,会直接忽略
1. 常见的数组操作方法
数组去重:
取数组中最大值:
取数组中最小值:
复制数组:
去除数组中只指定元素,只能去除一个,如果想多个,之前先用unique处理:
判断数组中元素出现的次数最多的一个元素和次数:
3.常用的正则表达式
4.操作className的方法集
5.操作字符串方法
6.加密方法集
7.日期方法集
1.递归方法实现如下数列:1,1,2,3,5,8,13,21,34,55……