博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS命名空间、对象封装
阅读量:5149 次
发布时间:2019-06-13

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

欢迎访问个人空间:www.zjxwow.com   Chrome、FireFox 17+ Only

网上有很多关于JS模拟面向对象的课程,如果不能理解下述方法,请自行谷歌!

以下是我总结的一套模拟面向对象套路,已用于生产。

/*@author:zjx@version:1.0*/var lib = lib || {}; // 命名空间lib.wgt = lib.wgt || {}; // 命名空间

接下来,演示一个类是如何模拟的:

(function (window, undefined) {     // 自定义的私有对象    var Dater = function (){}    // 外部可调用的对象    lib.wgt.Calendar = function(opts){        return new Calendar(opts); // 调用时省略 new 关键字    }    var Calendar = function(){        this.today = this.opts.today || new Date(); // 属性    }    // 公共实例方法    Calendar.prototype = {        // 方法:初始化一个日历表        initPicker: function () {            // 调用私有实例方法            initEvent.call(this);            // 调用私有静态方法            getMonthList();        }    };    // 私有方法    function initEvent(){        console.log(this.today); // 私有方法中调用变量成员    }    // 私有静态方法    function getMonthList(selected){}    // 公共静态方法    lib.wgt.Calendar.static = function(){}})(window);

私有方法的模拟:在该自执行匿名方法中,声明独立的方法以供调用,不利用闭包,内部变量是完全无法被外界获取的。

匿名函数带上window参数的意义在于内部变量如果用到window对象不需要回退到整个文档,定义undefined是因为在一些浏览器中可以被替换。如此定义undefined在Eclipse中貌似会被报错,不过这不打紧。

要调用该类:

var calendar = lib.wgt.Calendar({ // 初始化	// 各种参数});calendar.initPicker(); // 实例方法调用lib.wgt.Calendar.static(); // 静态方法调用

没有使用new关键字是因为已经在类的构造函数中使用过。

转载于:https://www.cnblogs.com/zjxwow/archive/2013/01/17/2865362.html

你可能感兴趣的文章
batch
查看>>
CodeForces 237C
查看>>
POJ 2485(Kruskal算法)
查看>>
《20171122-构建之法:现代软件工程-阅读笔记》
查看>>
谈谈对于企业级系统架构的理解—李平
查看>>
请你不要去指责
查看>>
PHP常用正则表达式
查看>>
Linux学习总结(四)-两种模式修复系统,单用户,救援模式
查看>>
Lambda表达式
查看>>
srm537 div1-3 最小费用最大流
查看>>
软件项目中的功能点法估算-原理
查看>>
IOS 获取中英文字符串长度
查看>>
Qt 获取组合键 键盘按住某键 鼠标组合实现
查看>>
php分享十七:http状态码
查看>>
php分享三十二:php调试工具
查看>>
MySQL_安装_版本8.0
查看>>
查找 nginx 路径
查看>>
Git 进阶指南(git ssh keys / reset / rebase / alias / tag / submodule )
查看>>
博客落户
查看>>
Linux虚拟机的安装(使用Centos6.3)
查看>>