摘要:偶然在知乎上看到一篇回帖,瞬间觉得之前看的那么多资料都不及这一篇回帖让我对 websocket 的认识深刻有木有。所以转到我博客里,分享一下。比较喜欢看这种博客,读起来很轻松,不枯燥,没有布道师的阵仗,纯粹为分享。废话这么多了,最后再赞一个~ 一、websocket与http WebSocket是H
阅读全文
摘要:将nodeList转换为数组(兼容性) 在IE8以前的浏览器中nodes非JScript对象而是COM对象,所以 Array.prototype.slice.call(nodes,0); 会出错 需要catch来捕获错误,然后手动创建数组
阅读全文
摘要:!! 是将后面的表达式转换成布尔类型的值var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test);由于对null与undefined用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于,如果
阅读全文
摘要:由于IE和非IE浏览器检测方式不同,所以代码如下
阅读全文
摘要:先说明一下什么是循环引用对象: var a={"name":"zzz"}; var b={"name":"vvv"}; a.child=b; b.parent=a; var a={"name":"zzz"}; var b={"name":"vvv"}; a.child=b; b.parent=a;
阅读全文
摘要:鼠标单击 获取焦点 或元素发生任何改变,怎么说呢,目前的理解是,元素发生了什么改变,使得它跟以前不一样了。比如同样是p元素,先有一个样式。后来这个p被hover了、被focus了。或者通过另外一条途径才能得到它。比如原来是<div><p></p></div> 获取div p就可以了。但是如果有个di
阅读全文
摘要:填写表单时会调出手机上面的软键盘,若body是按照百分比做自适应布局会挤压布局。解决方法:1、将表单内容按照px定宽高。2、整个表单form绝对定位(尽量保证各表单位置不变)3、form里面的元素相对定位,上下的间隔使用margin-top4、以上保证表单不会挤压变形,若body上有自适应的背景图片
阅读全文
摘要:寄生组合式继承是集寄生式继承和组合继承的优点于一身,是基于类型继承最有效的方式 function object(o){ function F(){}; F.prototype = o; return new F(); } function inheritPrototype(subType,superType){ var prototype = object(su...
阅读全文
摘要:有一点需要说明:首先返回的对象与构造函数或者构造函数的原型属性之间没有关系,也就是说构造函数返回的对象与在构造函数外部创建的对象没有什么不同,为此不能依赖 instanceof 操作符来确定对象类型。 由于存在上述问题,建议在可以使用其他模式的情况下,不要使用这种模式。
阅读全文
摘要:注:使用动态原型模式时,不能使用对象字面量重写原型,如果在已经创建了实例的情况下重写原型,那么就会切断现有实例与新原型之间的联系
阅读全文
摘要:由于in操作符只要通过对象能访问到属性就返回true,hasOwnProperty()只在属性存在于实例中才返回true,因此只要in操作符返回true,hasOwnProperty()返回false,就可以确定属性是原型中的属性、
阅读全文
摘要:我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那么prototype就是通过调用构造函数而创建的那个对象实例的原型对象。使用原受对象的好处是可以让所有对象实例共享它所
阅读全文
摘要:工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程。考虑到在ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节 // "hi china"
阅读全文
摘要:// _year数据属性,year访问器属性
阅读全文
摘要:var values = [1,2,3,4,5] var sum = values.reduce(function(pre,cur,index,array){ return pre + cur }) alert(sum) // 15 reduceRight()与reduce()的区别是从右往左 re
阅读全文
摘要:从整数范围内随机选择一个值 Math.floor(Math.random()*可能总数+第一个可能的值) 公式中用到了Math.floor()是因为Math.random()总返回一个小数值。而这个小数值乘以一个整数,再加上一个整数,最终还是一个小数。如果你想选择一个1-10之间的整数,可以这样写
阅读全文
摘要:apply技巧: 可以将数组的每一项分别作为参数传入函数。 var value = [3,6,34,90]; alert(Math.max.apply(Math,value)); // 90 这个技巧的关键是把Math对象作为apply()的第一个参数,从而正确地设置this的值,然后可以将任何数组
阅读全文
摘要:Global对象可以说是ECMAScript中最特别的一个对象了。因为不管你从什么角度上看,这个对象都是不存在的。ECMAScript中的Global对象在某种意义上是作为一个终极的“兜底儿对象”来定义的。换句话说,不属于任何其他对象的属性和方法,最终都是它的属性和方法。事实上,没有全局变量或全局函
阅读全文