仿jq封装-框架的核心机构开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29412527/article/details/80796848

在开发框架时,为了防止变量以及全局对象的污染,要使用沙箱模式。
沙箱模式: 代码自执行,分割作用域
将常用的全局对象,通过参数传递到沙箱内
好处:

  1. 在一定程度上提高变量的搜索性能;
  2. 有利于代码压缩

    (function(global) {
        // 独立的作用域,与外界隔离
    }(window));
    

<script>
(function (global) {
    var init;
    //核心函数
    //1.利用工厂模式。new 或者不new 都能正确的创建对象
    var itcast = function (selector, context) {
        return new itcast.fn.init(selector, context);
    }
    //核心原型,存储操作dom元素的方法
    itcast.fn = itcast.prototype = {
        constructor: itcast
    };

    //构造函数
    // 2. 为了和itcast建立关联,将构造函数init写到itcast的原型上。。
    //同时让init变量也引用该构造函数。为了方便使用
    //function init(selector, context) {}

    init = itcast.fn.init = function (selector, context) {}

    //3.1 由于在框架外部用户只能拿到itcast函数以及其原型。(从外部访问不了what)
    //3.2 用户在扩展操作dom方法时,只能向原型上扩展。(不可能修改源码)
    // 为了用户在框架外部实现扩展方法.让init对象继承自itcast。prototype
    // itcast.prototype.init.prototype = itcast.prototype;
    init.prototype = itcast.prototype;

    //4. 将itcast函数暴露在全局上
    //任何用户只要加载框架代码,就可以使用$函数,就是itcast
    global.$ = global.itcast = itcast;
})(window);

itcast.prototype.addClass = function () {
    console.log('addClass');
}
var i = itcast("div");
i.addClass();
</script>

猜你喜欢

转载自blog.csdn.net/qq_29412527/article/details/80796848
今日推荐