解决方案 »

  1.   

    匿名函数里的方法只有匿名函数里的可以访问  外部不可以   或者改变作用域试试
    (function(){
      function regExpArr() {
        var a=12333+'adsw';
        var p = new RegExp(/^\w{5,12}$/);
        document.write(p.test(a));
     }
    window['regExpArr']=regExpArr;
    })()
      

  2.   

    function regExpArr() {-------》
    window.regExpArr = function(){
      

  3.   

    jquery里 所有给用户用的方法也都是这么写的? 因为它的整体是在一个匿名函数里,但是我没看到有几个是用window.***写的阿
      

  4.   


    好使了(function(window, undefined){
    window.regExpArr=function() {
    var a=12333+'adsw';
    var p = new RegExp(/^\w{5,12}$/);
    document.write(p.test(a));
    }
    }(window))
      

  5.   

    <a href='#' onclick = "regExpArr();">提交</a>jquery里会用这种方式添加事件吗?都是$(id).click(fun)吧 
    jquery的$是返回一个jquery对象  那个对象有公共方法和私有方法啊
      

  6.   


    怎么在匿名函数里添加公共方法呢?
     jquery要这样写?
    ....
    <script>
    function asd(){
    $(id).click(fun)
    }
    $(id).click(fun)
    </script>
    ....
    <a href='#' onclick = "asd();">提交</a>
    ....
      

  7.   


    上下文简单说
    js运行时 隐含一个叫做上下文的 context
    所有的对象都挂靠在 context上每一行代码在运行时 都能访问这个 context
    如果你这行代码 访问以个变量  那么会优先在这个context中搜索
    如果没有 会在父的context中查找   
    所有context都没有 最终会在window中查找不知明白否
      

  8.   


    上下文简单说
    js运行时 隐含一个叫做上下文的 context
    所有的对象都挂靠在 context上每一行代码在运行时 都能访问这个 context
    如果你这行代码 访问以个变量  那么会优先在这个context中搜索
    如果没有 会在父的context中查找   
    所有context都没有 最终会在window中查找不知明白否

    这个上下文就是this吧。
      

  9.   


    上下文简单说
    js运行时 隐含一个叫做上下文的 context
    所有的对象都挂靠在 context上每一行代码在运行时 都能访问这个 context
    如果你这行代码 访问以个变量  那么会优先在这个context中搜索
    如果没有 会在父的context中查找   
    所有context都没有 最终会在window中查找不知明白否

    这个上下文就是this吧。不是 this.a = 100;
    a = 100;你觉得 2个a的区别 在哪里? 
    你认为他们是同一个a吗这个context 在js编写环境你是看不到也不给你引用的 你只能感觉到(你能直接引用的context 就是 window)
    但是在 js运行时 肯定是存在的所以 在不同 context 并且没有嵌套关系的 2个context中 要相互访问
    那么 引用 window 是唯一的办法补充下
    你也可以 在函数中 传对象引用来 共享对象(这就是封装闭包技巧)
      

  10.   


    我想把正则验证放到一起:
    现在只是测试 所以直接把想要验证的字符串a写在js里面, 然后regExpArr. password是验证密码的
    正则表达式,regExpArr. reg是验证方法,我在regExpArr. reg里面放了一个参数str因为以后不只是要验证密码,还要验证别的,当执行regExpArr.reg是 传入str然后regExpArr.str引用对应的正则表达式,比如:点击提交的时候传入password,然后就调用regExpArr. password这个表达式。 但是,不好使啊。这个真心不知道该怎么处理,又不能在regExpArr.reg里面只写regExpArr. password的验证,要是有20个需要验证的岂不是要写20个regExpArr.reg。求助!!!!(function( window, undefined ){
    a=43124214+'ffdaf';
    window. regExpArr = function() {};
    regExpArr. password = /^\w{5,12}$/;
    regExpArr. reg = function(str){
        p = new RegExp(regExpArr.str);
        document.write(p.test(a));
    }
    }(window))<html>
    <head>
    <script src='../Jmind/Jmind.js'></script>
    </head>
    <body>
    <input type='text'/><p></p>
    <a href='#' onclick = "regExpArr.reg('password');">提交</a>
    </body>
    </html>
      

  11.   

    我来帮你抽象下把核心api:  var result = new RegExp(reg).test(str);       //reg:表示你的正则   str表示你要验证的 字符串       result 表示结果
    这个没什么封装必要  因为环境已经提供了 你只要调用就可以了业务逻辑:
    密码验证:     var result = new RegExp(pwdreg).test(pwdstr);
    email:   var result = new RegExp(emailreg).test(emailstr);
    ...... 
    证明 任意的验证  实际就是这么2个参数的变换再分析这2个参数 
    reg(正则) 这个再正式运行的时候是固定的 也就是预先提供的
    str (要验证的字符串)  这个再正式运行的时候 是未知的这样我们就有了一个 属于自己业务的验证方法/**
    验证
    @regname 要验证的类型的名称
    @str 要验证的字符串
    */
    function myreg(regname,  str ){
          var reglist = {
                 'password':'密码正则'
                ,'email':'email正则'
          }
         var reg = reglist[regname];  //获取相应的正则
          if(!reg){
              alert('没有指定名称的正则:'+regname);    //没有预定指定正则
              return false;
        }
         var result = new RegExp(reg).test(str);   //获取验证结果
         return result
    }
    [这个核心业务方法 以后可以重构]现在你的业务验证的核心方法有了
    你剩余要做的 只有3件事情
    1.这个方法的声明放在什么位置(要看你程序怎么组织了)
    2. 完善你的 reglist 有20个? 就算200个 你也先写满这个配置 200个就写200条
    3.再适当的时候调用 怎么调用? 那就看调用的人怎么写了  反正你要提供这么2个参数 1个验证类型 1个验证字符串现在 是不是 感觉整个层次 清楚了
    可以分工了  
    一个人书写管理核心方法
    一个人管理核心的reglist配置
    一个人负责业务方法的调用没有这么多人?  那你就把自己假想成这么3个人
      

  12.   

    下面的为什么输出是 The Window var name = "The Window";
      var object = {
        name : "My Object",
        getNameFunc : function(){
          return function(){
            return this.name;
          };
        }
      };
      alert(object.getNameFunc()());
      

  13.   

    getName返回的那个方法的this指向的window
      

  14.   


    它应该是指向object的啊, 为什么指向window
      

  15.   

    var name = "The Window";
     var object = {
       name : "My Object",
       getNameFunc : function(){
     var me=this;
         return function(){
           return me.name;
         };
       }
     };
     alert(object.getNameFunc()());这个真说不清楚啊 
      

  16.   

    建议看Javascript DOM高级程序设计一书第一章,介绍如何编写自己的库函数,按照题主的写法要将函数注册到window对象上。