javascript常用函数方法整理汇总

javascript常用函数方法整理汇总

1. 当实际参数的个数与形式参数的个数不匹配时,不会导致错误。
如果实际参数值过多了,超出的参数值将被忽略;如果实际的参数值过少,缺失的值将被替换为undefined。

2. 在网页特效中一共有四种调用模式: 方法调用模式、函数调用模式、构造器调用模式和apply调用模式。这些模式在如何初始化关键参数this上存在差异。
a.方法调用模式:
当一个函数被保存为对象的一个属性时,我们称它为一个方法。方法调用模式可以使用this去访问对象,所以它能够从对象中取值或修改对象。
b.函数调用模式:
当一个函数并非一个对象的属性时,它被当作一个函数来调用。当函数以此模式调用时,this被绑定到全局变量,这是语言设计上的一个错误。(正确的情况: 当内部函数被调用时,this应该仍然被绑定到外部函数的this变量。)解决方法:如果该方法定义一个变量并给他赋值为this,那么内部函数就可以通 过那个变量访问到this,按照约定,给那个变量命名为 that:

//给 myobject增加一个double方法

    myobject.double = function()
    {
     var that = this; //解决方法

     var helper = function()
     {
      that.value = add(that.value, that.value);
     }

     helper(); //www.3ppt.com以函数的形式调用helper。
    }

    //以方法的形式调用double
    myobject.double();

c.构造器调用模式:
在一个函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上

//创建一个名为quo的构造函数。它构造一个带有status属性的对象

    var quo = function(string)
    {
     this.status = string;
    }

    //给quo的所有实例提供一个名为get_status的公共方法
    quo.prototype.get_status = function()
    {
     return this.status;
    }

    //构造一个quo实例
    var myquo = new quo("confused"); //构造器模式调用
    document.writeln(myquo.get_status());

构造器函数保存在以大写格式命名的变量里。
d.apply调用模式:
apply方法接受两个参数,第一个是将被绑定给this的值,第二个就是参数数组。它让我们构建一个参数数组并用其去调用函数。

    //构造一个quo实例
    var myquo = new quo("confused"); //构造器模式调用
    document.writeln(myquo.get_status());

    //构建一个包含两个数字的数组,并将他们相加
    add = function(a, b)
    {
     return a+b;
    }

    var anarray = [3, 4];
    var sum = add.apply(null, anarray);  //7

    //构建一个包含status成员的对象
    var statusobject = {
     status: "a-ok"
    };

    //statusobject并没有继承自quo.prototype,但我们可以再statusobject上调用
    //get_status方法,尽管statusobject并没有一个名为get_status的方法。
    var status = quo.prototype.get_status.apply(statusobject);

3. 参数:
当一个函数被调用时,会有一个默认的参数,就是 arguments “数组”。


//构造一个将很多值相加的函数

//注意该函数内部定义的变量sum不会与函数外部定义的sum产生冲突。
//该函数只能看到内部的那个变量。

    var sum = function()
    {
     var i, sum=0;
     for(i = 0; i < arguments.length; i+=1)
     {
      sum += arguments[i];
     }
     return sum;
    };

    document.writeln(sum(4, 8, 15, 16, 23, 42)); //108

注:arguments并不是一个真正的数组。它知识一个“类似数组”的对象。arguments用友一个length属性,但它缺少所有的数组方法。

4. 返回:
一个函数总是会返回一个值。如果没有置顶返回值,则返回undefined。
如果函数以构造器方式被调用,且返回值不是一个对象,则返回this(该新对象)。

5.给类型增加方法:

 

    function.prototype.method = function(name, func)
    {
     this.prototype[name] = func;
     return this;
    }

    //www.3ppt.com给number添加一个integer方法,来提取数字钟的整数部分
    //根据正负来判断是使用math.ceil还是math.floor
    number.method('integer', function(){
     return math[this < 0 ? 'ceil' : 'floor'](this);
    });

    document.writeln((-10/3).integer()); //-3

//去掉字符串两端空白的方法

    string.method('trim', function()
    {
     return this.replace(/^s+|s+$/g, '');
    });

基本类型的原型是公共结构,所以在类库混用时务必小心。一个保险的做法就是只在确定没有该方法时再添加

//有条件的增加一个方法

    function.prototype.method = function(name, func)
    {
     if(!this.prototype[name])
     {
      this.prototype[name] = func;
      return this;
     }
    };

6.闭包
理解内部函数能访问外部函数的实际变量而无需复制

//构造一个函数,用错误的方式给一个数组中的借点设置事件处理程序
//当点击一个节点时,按照预想应该弹出一个对话框显示节点的序号
//但他总是会显示节点的数目

    var add_the_handlers = function(nodes) {
     var i;
     for (i = 0; i < nodes.length; i += 1) {
       nodes[i].onclick = function(e) {
        alert(i);
       }
     }
    }

add_the_handlers函数的目的是给每个事件处理器一个唯一值(i)。它未能达到目的的原因是事件处理器函数绑定了变量i,而不是函数在构造时的变量i的值。
正确的写法:

//点击一个节点,将会弹出一个对话框显示节点的序号

    var add_the_handlers = function (nodes) {
     var i;
     for (i = 0; i < nodes.length; i +=1 ) {
      nodes[i].onclick = function (i) {
       return funtion (e) {
        return alert(e);
       } ;
      }(i);
     }


}

现在,定义了一个函数并立即传递i进去执行,而不是把一个函数赋值给 进去的i的值,而不只定义在 add_the_handlers函数里的i的值。那个被返回的函数被复制给onclick。

7.javascript的单例模式
javascript的单例就是用对象字面量表示法创建的对象,对象的属性值可以是数值或函数,并且属性值在该对象的生命周期中不会发生变化。他通常作为工具为程序其他部分提供功能支持

8.模块
模块模式的一般形式是:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数,或者把他们保存到一个可访问的地方。

你可能感兴趣的:(JavaScript,职场,undefined,解决方法,休闲)