JS基础 【函数 + model模式】

一、函数声明和函数表达式

        函数声明:

          function 函数名称 (参数:可选){ 函数体 }

                例如: function a () {}

  函数表达式:

          function 函数名称(可选)(参数:可选){ 函数体 }

                例如:function (b) {}

function foo () {} // 声明,因为它是程序的一部分
var bar = function foo () {}; // 表达式,因为它是赋值表达式的一部分
new function bar () {}; // 表达式,因为它是new表达式
(function () {
    function bar () {} // 声明,因为它是函数体的一部分
})();

二、Module模式的基本特征

  • 常用于模块化、可重复利用

  • 封装了变量和Function,和全的namespace(js中的命名空间函数)不接触,松耦合
  • 只暴露可用的public方法,隐藏私有方法

    例如:

// 创建一个立即调用的匿名函数
// return 一个变量,这个变量中包含想要暴露的属性
// 将这个变量赋值给Calculator
var Calculator = function (eq) {
    //这里可以声明私有成员

    var eqCtl = document.getElementById(eq);

    return {
        // 暴露公开的成员
        add: function (x, y) {
            var val = x + y;
            eqCtl.innerHTML = val;
        }
    };
};
var calculator = new Calculator('eq');
calculator.add(2, 2);

三、闭包

    有权限访问另一个函数作用域内的变量的函数都是闭包

    应用:(匿名函数+闭包)

// 利用闭包保存状态
var elems = document.getElementsByTagName('a');
// 方式一
for (var i = 0; i < elems.length; i++) {
    (function (lockedInIndex) {
        elems[i].addEventListener('click', function (e) {
            e.preventDefault();
            alert('I am link #' + lockedInIndex);
        }, 'false');
    })(i);
}
// 方式二
for (var i = 0, len = elems.length; i < len; i ++) {
    elems[i].addEventListener('click', (function (lockedInIndex) {
        return function (e) {
            e.preventDefault();
            alert('I am link #' + lockedInIndex);
        }
    })(i), 'false');
}

四、自执行表达式

    (function () {} ()) 或 (function () {})()

五、 RegExp 对象

  • test():检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回true,否则返回false;
  • exec():检索字符串中与正则表达式匹配的值,返回一个数组,存放匹配的结果;如果未找到,返回null;
  • compile():可以在脚本执行过程中编译正则表达式,也可以改变已有表达式。

注:match是支持正则表达式的String对象的方法





你可能感兴趣的:(技术博客)