【问题标题】:var card= cleanNum: function(){....} what does this cleanNum: mean?var card= cleanNum: function(){....} 这个 cleanNum: 是什么意思?
【发布时间】:2016-01-08 04:18:46
【问题描述】:

我想知道下面代码中的 cleanNum 是什么意思。是函数名还是代表什么?

//code snippet 1
var creditCard = {
  cleanNum : function(number){
    return number.replace(/[- ]/g,"");
  }
};

第一季度。我不明白 cleanNum 的含义。你能解释一下cleanNum()的意义吗?

第二季度。如果我在另一个名为 another_func() 的函数中使用它,如何调用代码 sn-p 1?

下面的sn-p代码和上面一样吗?

//code snippet 2
function cleanNum(number){
  //sample code
}

【问题讨论】:

  • sn -p 1 中存在语法错误..
  • 你是这个意思吗?var creditCard = { cleanNum : function(number){ return number.replace(/[- ]/g,""); } }
  • 是的。你说的对。我会编辑它
  • 这将帮助您了解javascript命名空间javascriptweblog.wordpress.com/2010/12/07/…

标签: javascript javascript-objects javascript-namespaces


【解决方案1】:

对我来说,代码实际上并没有编译这个错误:

Uncaught SyntaxError: Unexpected token :

我认为你的意图是

var cleanNum = function(number){
     return number.replace(/[- ]/g,"");
}

这类似于另一种方式,称为函数声明。不同之处在于加载代码的时间。当声明像 function cleanNum() {...} 这样的函数时,该代码在任何代码执行之前加载,而表达式(见上面的代码块)在执行期间加载。如果您在加载之前尝试调用它,则会引发错误。

编辑

刚刚看到对您的代码块所做的编辑。当你这样做时:

var creditCard = 
    { 
        cleanNum : function(number){ return number.replace(/[- ]/g,"");
        }    
    }

您将 cleanNum 存储在 creditCard 对象下,要调用它,您必须使用

creditCard.cleanNum(param)

这和原来的不一样,因为之前你可以直接访问它

cleanNum(param)

【讨论】:

  • 对不起。我在 Screen Cast 上看到了代码。我按照@KishoreSahas 在 cmets 中指出的问题对其进行了编辑。
【解决方案2】:

我想知道下面代码中的 cleanNum 是什么意思。是函数名还是代表什么?

只是一个函数名

第一季度。我不明白 cleanNum 的含义。你能解释一下cleanNum()的意义吗?

cleanNum() 只是一个function 名称,位于namespace creditCard 之下。

第二季度。如果我在另一个名为 another_func() 的函数中使用它,如何调用代码 sn-p 1?

您可以通过creditCard.cleanNum(numbr)调用该函数

下面的sn-p代码和上面一样吗?

不是的

要了解更多javascript中的命名空间click here

【讨论】:

    【解决方案3】:

    第一季度。我不明白 cleanNum 的含义。你能解释一下cleanNum()的意义吗?

    cleanNum 是在对象元素中用匿名函数定义的函数名。该函数将通过删除其中的破折号(“-”)使number 变得干净。我猜这将是信用卡号码,所以它会输入类似于 1-2345-6789-01-2 的内容,然后只返回数字(没有破折号),在这种情况下将是 123456789012

    第二季度。如果我在另一个名为 another_func() 的函数中使用它,如何调用代码 sn-p 1?

    你可以调用它

    creditCard.cleanNum(number);
    

    希望对你有帮助,

    【讨论】:

      【解决方案4】:

      您可以通过两种方式定义 cleanNum 函数:

      1)function cleanNum(number) { }

      这样,cleanNum 在代码执行开始之前就被加载到内存中。你可能不需要这个。

      2)cleanNum=function(number) { }

      这样每次调用cleanNum都会加载到内存中。

      您还可以使用以下方式访问 cleanNum 函数:

      creditCard.cleanNum(number)
      

      【讨论】:

        【解决方案5】:

        第一件事:var x = {} 定义了一个新对象,在 {} 中声明的每个变量都成为该对象的一个​​字段。

        以下将创建一个带有字段编号的对象(由变量creditCard 引用)

        var creditCard = {
          number: '3432-2342-34243'
        };
        

        至于Q1,cleanNum的意义在于它是对象creditCard的成员。只是不包含 int/string/date 等,而是包含 function

        var creditCard = {
          cleanNum : function(number){
            return number.replace(/[- ]/g,"");
          }
        };
        

        至于Q2,功能本身是一样的,只是作用域不同。直接定义时,可以直接访问,如果定义在对象内部,则只能通过该对象访问:

        creditCard.cleanNum(somenumber);
        

        更进一步,为了证明函数本身只是一个函数,您可以在 creditCard 之外定义该函数并在您的对象中重用该函数:

        function cleanNumGlobal(number){
            return number.replace(/[- ]/g,"");
          }
        
        var creditCard = {    
          cleanNum : cleanNumGlobal
        };
        
        //both call the same function:
        console.log(cleanNumGlobal('2432-2423-234'));
        console.log(creditCard.cleanNum('2432-2423-234'));
        

        附带说明:通常这样的函数会使用对象本身的属性,因此它不会使用参数编号,而是使用对象本身的属性number(或在设置时清除编号该属性)。但这超出了问题范围;)

        【讨论】:

          猜你喜欢
          • 2012-06-30
          • 2016-11-12
          • 1970-01-01
          • 1970-01-01
          • 2014-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-22
          相关资源
          最近更新 更多