08 2014 档案
摘要:解析json:前台和后台做ajax交互,后台返回的json字符串,我之前都是通过eval来解析,后来慢慢的知道eval这货是魔鬼,eval要尽量避免,是出于安全考虑,因为eval过于强大,他可以把string串作为代码执行。如果控制不好就会造成安全漏洞。所以ECMA推出了JSON.parse,通过这...
阅读全文
摘要:使用window.open()方法既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。这个方法可以接收4个参数:要加载的URL、窗口目标、一个特性字符串以及一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值。通常只须传递第一个参数,最后一个参数只在不打开新窗口的情况下使用。//等同于...
阅读全文
摘要:窗口大小 跨浏览器确定一个窗口的大小不是一件简单的事。IE9+、Firefox、Safari、Opera和Chrome均为此提供了4个属性:innerWidth、innerHeight、outerWidth和outerHeight。在IE9+、Safari和Firefox中,outerWidth...
阅读全文
摘要:工厂模式 设计工厂模式的目的是为了创建对象。它通常在类或者类的静态方法实现,具有下列目标: 1.在创建相似对象是执行重复操作 2.在编译时不知道具体类型(类)的情况下,为工厂客户提供一种创建对象的接口。 通过工厂方法(或类)创建的对象在设计上都继承了相同的父对象这个思想,它们都是实现专门功能的特定...
阅读全文
摘要:单体模式的思想在于保证一个特定类仅有一个实例。这意味着当第二次使用同一个类创建的新对象的时候,应该得到与第一个所创建的对象完全相同。javacript中并没有类,因此对单体咬文嚼字的定义严格来说并没有意义。但是javascript具有new语法可使用构造函数来创建对象,而且有时需要使用这种语法的单体...
阅读全文
摘要:var extendDeep = function(parent,child){ var i, toStr = Object.prototype.toString, astr = '[object Array]'; child = child || {}; for( i in parent)...
阅读全文
摘要:javascript中没有常量的概念,虽然许多现代的变成环境可能为您提供了用以创建常量的const语句。对于的自己的变量,可以采用相同的命名约定,并且将他们以静态属性的方式添加到构造函数中。//构造函数var Widget = function(){ //实现...}//常数Widget.MAX_...
阅读全文
摘要:就私有静态成员而言,指的是成员具有如下属性:1.以同一个构造函数创建的所有对象共享该成员。2.构造函数外部不可访问该成员。//构造函数var Gadget = (function(){//静态变量/属性var counter = 0, NewGadGet; NewGadget = fun...
阅读全文
摘要:公共静态成员在javascript中并没有特殊语法来表示静态成员。但是可以通过使用构造函数向其添加属性这种方式。//构造函数var Gadget = function(){};//静态方法Gadget.isShiny = function(){ return 'you bet';}//向该原型添加...
阅读全文
摘要:沙箱模式解决了命名空间模式的如下几个缺点:1.对单个全局变量的依赖变成了应用程序的全局变量依赖。在命名空间模式中,是没有办法使同一个应用程序或库的2个版本运行在同一个页面中。2.对这种以点分割的名字来说,需要输入更长的字符,并且在运行时需要解析更长的时间,比如MYAPP.utilities.arra...
阅读全文
摘要:var Person = (function(){ var Constr; Constr = function(){ this.name = 'carl'; } Constr.prototype = { constructor : Constr, ...
阅读全文
摘要:目前模块模式得到了广泛应用,因为它提供了结构化的思想并且有助于组织日益增长的代码。模块模式提供了一种创建自包含非耦合代码片段有利工具,可以将它视为黑盒功能。板栗:var array = (function(){ //私有变量 var array_string = '[object Array]'...
阅读全文
摘要:揭示模式可用于将私有方法暴露为公共方法。当为了对象的运转而将所有功能放置在一个对象中以及想尽可能地保护该对象,这种揭示模式就非常有用。板栗:var myarray;(function(){ var astr = "[object Array]", toString = Object.protot...
阅读全文
摘要:命名空间:命名空间有助于减少程序中所需要的全局变量的数量,并且同时还有助于避免命名冲突或过长的名字前缀。板栗:var MYAPP = MYAPP || {}; MYAPP.namespace = function(ns_string){ var parts = ns_string.split('...
阅读全文
摘要:如果有时候我们忘记对构造函数使用new的话,构造函数的this将指向windowfunction Person(){ this.name = 'Julie';}var good_moring = Person();console.log(good_moring); //输出undefinedcon...
阅读全文
摘要:惰性函数:所谓惰性函数就是创建了一个新函数并且将其分配给保存了另外函数的同一个变量,就以一个新函数覆盖了旧函数。某种程度上,回收了旧函数指针以指向一个新函数。 板栗:var scareMe = function(){ console.log('Boo'); scareMe = functi...
阅读全文
摘要:function curry(fn){ var slice = Array.prototype.slice; var arr = slice.call(arguments,1); return function(){ var newArr = slice.call(arguments);...
阅读全文
摘要:var str = '123456789';function division(str){ var arr = str.split(''), len = arr.length, i = 3; while(i < len){ arr.splice(l...
阅读全文

浙公网安备 33010602011771号