【前端学习】函数式编程相关

  • Function对象的length属性返回的时函数的形参个数,Arguments对象的length属性返回的是函数的实参个数。如果函数不是匿名函数,arguments.callee等价于函数名。
  • 关于call与apply

    function f () {

        this.a = 'a';

        this.b = function () {

           alert('b') 

         }  

      } 

    function e () {

        f.call(this);

        alert(a);

      }

    e() // 'a'

    上面实例说明,如果在函数体内使用call和apply方法动态调用外部函数,并将call,apply发放的第一个参数设置为this,那么当前函数e将继承f的所有成员,使用call,apply方法能够复制调用函数的内部变量给当前函数体,更改了函数f的内部this指向函数e,这样e就可以引用f内部成员。

  • 函数调用模式
    •   方法调用模式。当一个函数被保存为对象的一个属性时,成为一个方法。当一个方法被调用时,this被绑定到当前对象。
    •       函数调用模式。当一个函数并非一个对象的属性时,它将被当做一个函数来调用。this绑定到全局对象。
    •       构造器调用模式。如果在一个函数前面加上new运算符进行调用,那么将创建一个隐藏链接到该函数的prototype原型对象的新实例对象,同时this将会被绑定到这个新实例对象上。(构造器函数一般大写字母开头)
    •       apply调用模式。使用这个方法可以调用函数并且修改函数体内this值。
  • 函数调用于引用的区别
  • 建议通过Function扩展类型   

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

  • 惰性实例化。

 

 

posted @ 2015-06-07 13:29  lomo1219  阅读(182)  评论(0编辑  收藏  举报