框架封装基础
一:解决全局变量污染的问题---->自执行涵数
1:将我们需要获取的赋值给window全局变量,使其成为window的一个属性
//外界无法访问闭包中的涵数,方法 (function () { var name = 'ss'; var sex = '男'; function get1() { return name + ':' + sex; } function get2(){ return name + ':' + sex; } var json={ name:name, sex:sex, get1:get1, get2:get2, on: function () { console.log('你好'); } } window.$=json; }()); console.log($.on());//你好,undefind console.log($.get1());//ss:男
2.传参类似jquery访问闭包里的属性和方法
例如://解决外界无法访问闭包中的涵数,方法,速度快 (function (w) { var name = 'ss'; var sex = '男'; function get1() { return name + ':' + sex; } function get2() { return name + ':' + sex; } var json = { name: name, sex: sex, get1: get1, get2: get2, on: function () { console.log('你好'); } } w.$ = json; }(window)); console.log($.on());//你好,undefind console.log($.get1());//ss:男
3.将我们需要获取的值赋值经任意一个全局变量,使其成为这个全局变量的属性
var o = new Object(); (function (w, obj) { var name = '毁掉'; var sex = '男人'; function get1() { return name + ':' + sex; } function get2() { return name + ':' + sex; } o.get=get1; }()); console.log(o.get());//毁掉:男人
4:return形式
var my=(function () { var name='ddd'; var sex='ll'; return{ get: function () { return name+":"+sex; } } }()); alert(my.get());//dd:ll
二: 命名空间--->解决全局变量污染问题(常用)
例如: //一个简单的框架封装,命名空间解决全局变量污染的问题 var jd={ //一般放置版本信息 verstion:'1.0' }; //公共模块 jd.common={ //常用方法 each: function () { }, map: function () { }, isArray: function () { }, isString: function () { } } //ui模块:pc端的ui组件,移动端 jd.ui={}; jd.ui.pc={ //tab栏组件 tab: function () { console.log('pc'); }, //幻灯片 ppt: function () { }, //导航 nav: function () { } }; jd.ui.mobile={ tab: function () { console.log('mobile'); }, //幻灯片 ppt: function () { }, //导航 nav: function () { } }; //页面 jd.page={} //产品相关页面 jd.page.product={} //订单相关页面 jd.page.order={} //用户管理相关页面 jd.page.user={} //支付页面 jd.pay={} //如何访问version? //如何访问pc端的tab? //如何访问移动端的tab? console.log(jd.verstion); jd.ui.pc.tab(); jd.ui.mobile.tab();
三: jquery实现原理
Title
四:自执行涵数的几种特殊写法
1:void function () { console.log(this);//window }();2: ~function () { console.log(this);//window }();3: !function () { console.log(this);//window }();4:;(function () { console.log(this);//window }());5: -function () { console.log(this);//window }();6:1, function () { console.log(this);//window }();7: 1^ function () { console.log(this);//window }();8: 1> function () { console.log(this);//window }();9: ~+-!(function () { console.log(this);//window }());10: ~!(function () { console.log(this);//window }());11: (function () { console.log(this);//window }).call();12:(function () { console.log(this);//window }).apply();