标签:
var myobject = { foo: "bar", func: function() { var self = this; console.log("outer func:this.foo=" + this.foo);//bar console.log("outer func:self.foo=" + self.foo); //bar (function() { console.log("outer func:this.foo=" + this.foo); //undefined,函数没有调用者时候,this指向window console.log("outer func:self.foo=" + self.foo); //bar })() } } myobject.func();
在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。
因此this.foo=undefined;self.foo=bar
同理换一种调用方法:
foo="test"; func=myobject.func(); func(); /*打印结果 outer func:this.foo=test outer func:self.foo=test outer func:this.foo=test outer func:self.foo=test
function getRandomColor(){ var colorch="#"; for(var i=0;i<6;i++){ var a=Math.random(); var choose=[1,2,3,4,5,6,7,8,9,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘] var num=Math.round(a * 15); colorch+=choose[num]; } return colorch; }
1.减少HTTP请求和请求资源大小(合并图片,用如 YUI Compressor等工具瘦身JS和CSS文件,合并多个CSS文件,合并多个JS文件,图片多时用lazyLoad,压缩图片大小)
2.减少DOM操作(例如用innerHTML="<a href>link<a>"这种方式取代createElement等DOM操作)
3.使用CDN内容分布网络(例如jquery,用户在访问其他网站时可能从微软的CDN下载过Jquery文件放在缓存中,这样你的页面使用jquery不必再请求一次jquery文件)
4.用JSON代替XML来存储和交换数据
5.减少不合理嵌套(如table的td里套table,或者body ul li a这种)
6.减少Cookie(因为每次加载页面都会读本地Cookie)
7.使用HTML5本地缓存机制
8.先加载HTML页面结构,再进行表现层渲染,最后加载JS(CSS外链放头部,JS外链放尾部,因为请求JS会阻塞其他资源的下载请求)
5.实现数字千分位
function comdify(num){ var ch=num.toString(); var len=ch.length; if(len>3){ for(var i=len-3;i>0;i-=3){ ch=ch.substr(0,i)+","+ch.substr(i,len-1); len++; } } return ch; }
6.域名劫持
域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。
标签:
原文地址:http://www.cnblogs.com/QingFlye/p/4297212.html