Javascript高级技巧 类型检测 安全的构造函数惰性载入函数 函数绑定 定时器自定义事件

  次阅读 来源:互联网(转载协议) 2016-01-28 12:54 我要评论(0)

这篇文章主要介绍了Javascript高级技巧,需要的朋友可以参考下

上次整理了Ajax部分,这周看完了高级技巧部分,也整理下吧。

1、类型检测

使用Object.prototype.toString.call(obj)的方式。

因为无论typeof还是instanceof都无法做到精确判断变量类型。

2、安全的构造函数

通常我们定义构造函数的时候,会使用类似

代码如下:

function Person(name){

this.name = name;

}

然而之后如果不是去 var person = new Person("cnblogs")。

而是 var person = Person("cnblogs")。那么this就会指向别处,导致污染其余对象。

解决方法就是在设置this.property的时候判断

this instanceof Person

如果不是,则new Person(x,x,x);

代码如下:

function Person(name){

if(this instanceof Person){

this.name = name;

}else{

return new Person(name);

}

}

但是要注意一点,如果其余构造函数试图通过Person.call(this,x)这种方式实现继承的时候。

需要注意,在实例化之前把那个函数的原型指向到Person去。

3、惰性载入函数

在调用函数时,经常会存在一种情况,就是函数中需要对浏览器功能进行判断。

例如

代码如下:

function createSomething(){

if(supportH5){

//do something

}else{

//do otherthing

}

}

但是,如果一个浏览器支持一个功能,那么必然是一直都支持,所以这里面每次执行代码时都去判断是不必要的,因为判断一次就够了。

所以可以改写成

代码如下:

function createSomething(){

if(supportH5){

createSomething = function(){ //重写了createSomething 函数

//do something

}

}else{

//同上

}

}

这样,第一次调用时会做判断,之后重写了这个函数,也就自然不会判断了。

4、函数绑定

在js中,最搞混的应该就是 this 指向谁的问题。

其实,在我学习js这么久的时间里,发现一个结论

在函数中的this会指向最终调用这个函数的对象,换句话说就是,哪个对象调用了这个函数,this就指向那个对象。

搞清楚了这个,函数绑定就不是问题了。

改变函数里面this指向的方法就是 call 和 apply,不过用这两个方法都会执行函数。

如果不想执行函数,而是把函数当参数传给某个函数,还想改变this,那么就用最新的bind。

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 让AI触手可及  Qualcomm携手创通联达推出全新终端侧AI开发套件

    让AI触手可及 Qualcomm携手创通联达推出全新终端侧AI开发套件

  • 第一批国家重点研发计划公布,旷视科技开启“五年行动”

    第一批国家重点研发计划公布,旷视科技开启“五年行动”

  • 长虹新款智能语音空调,告诉你空调也能玩Siri

    长虹新款智能语音空调,告诉你空调也能玩Siri

  • 品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

    品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...