博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端那些事之框架封装基础篇
阅读量:6273 次
发布时间:2019-06-22

本文共 3558 字,大约阅读时间需要 11 分钟。

hot3.png

框架封装基础

一:解决全局变量污染的问题---->自执行涵数

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();

转载于:https://my.oschina.net/yongxinke/blog/851996

你可能感兴趣的文章
《算法导论》学习分享——摊还分析
查看>>
GO — 提供跨域请求代理服务
查看>>
【javascript 基础篇】prototype & constructor & instanceof
查看>>
AngularJs功能(八)--表单验证
查看>>
【源起Netty 外传】System.getPropert()详解
查看>>
LeetCode 300. Longest Increasing Subsequence
查看>>
Spring Boot快速入门(三):依赖注入
查看>>
ASUS Merlin固件开启JFFS教程
查看>>
JS面向对象之四 【new】 (创建特定对象的语法糖)
查看>>
使用 Nodejs 制作命令行工具
查看>>
Python调用C/C++方式
查看>>
JavaScript中的函数与arguments
查看>>
在vue-cli中组件通信
查看>>
翻译连载 | 附录 C:函数式编程函数库-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>
【313天】跃迁之路——程序员高效学习方法论探索系列(实验阶段71-2017.12.15)...
查看>>
Linux和Ubuntu的区别与联系
查看>>
【译】Tree-shaking - webpack 2 和 Babel 6
查看>>
开源跨平台移动项目Ngui【Action动作系统】
查看>>
ESP32:mdns协议
查看>>
Docker拥抱k8s早有预兆,Docker现何去何从?
查看>>