03 2012 档案

摘要://检测插件(在IE中无效) function hasPlugin(name) { name = name.toLowerCase(); for (var i = 0; i < navigator.plugins.length; i++) { if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) { return true; } ret... 阅读全文
posted @ 2012-03-23 17:57 cqclassic 阅读(275) 评论(0) 推荐(0)
摘要:如果是浏览器内置的屏蔽程序阻止的弹出窗口,那么window.open()很可能返回null。如果是浏览器扩展或其他程序阻止的弹出窗口,那么window.open()通常会抛出一个错误。因此,要想准确检测出弹出窗口是否被屏蔽,必须在检测返回值的同事,将对window.open()的调用封装在一个try-catch块中 var blocked = false; try { var windownew = window.open("http://www.baidu.com", "_blank"); //alert(windown... 阅读全文
posted @ 2012-03-23 15:07 cqclassic 阅读(376) 评论(0) 推荐(0)
摘要:静态私有变量 (function() { var name = ""; //私有变量,只在私有作用域中可以访问到 Person = function(value) { name = value; alert("私有作用域中的全局变量中的this:" + this); }; //Person为全局变量的构造函数 ,这时this为局部变量,所以name=value不能写成this.name=value; Person.prototype.getName = function() { return name;... 阅读全文
posted @ 2012-03-23 13:21 cqclassic 阅读(346) 评论(0) 推荐(0)
摘要:(function(){//这里就是块级作用域})();块级作用域 //无论在什么地方,只要临时需要一些变量,就可以使用块级作用域 function outputNumbers(count) { ( function() { for (var i = 0; i < count; i++) {alert(i);} } )(); alert(i); //error } outputNumbers(3);这种技术经常在全局作用域中被用在函数外部,从而限制向全... 阅读全文
posted @ 2012-03-23 12:18 cqclassic 阅读(320) 评论(0) 推荐(0)
摘要:很多人认为组合继承是js最常用的继承模式;不过它也有自己的不足。组合继承最大的问题就是无论什么情况下,都会调用两次超类型构造函数:一次是在创建子类型原型的时候另一次是在子类型构造函数内部。这样,子类型最终会包含超类型对象的全部实例属性,但我们不得不在调用子类型构造函数时重写这些属性。function SuperType(name){this.name=name;this.color=["red","blue","green"];}SuperType.prototype.sayName=function(){alert(this.nam 阅读全文
posted @ 2012-03-22 17:25 cqclassic
摘要:1.组合使用构造函数模式和原型模式。这样每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。//构造函数模式用于定义实例属性function Person(name,age,job){this.name=name;this.age=age;this.job=job;this.friend=["xj","nn"];}//原型模式用于定义方法和共享属性Person.protoype={constructor:Person,sayName:function(){alert(this.name);}}var person1= 阅读全文
posted @ 2012-03-22 16:24 cqclassic