百良西瓜

导航

函数和对象

1.  每个函数都包含以下属性:

  • 一个 prototype 属性,本质是一个对象,用于定义类实例的共享方法
  • 一个 this 关键字,函数作为方法时,引用调用方法的对象。
    Tip: function 单独调用的时候,称作函数; 被对象调用的时候,称作方法
  • 一个 arguments 类数组对象,并不是真正的数组,包含传给函数的所有实参
    arguments.length 表示实参个数
    arguments.callee 表示正在执行的当前函数
    arguments.caller 表示调用当前函数的上一级函数
    FunctionName.length 表示形参个数 

2.  使用 new F(...) 或者构造函数调用创建的对象,都隐式包含一个指针,指向构造函数的 prototype 属性。

  构造函数通常不需要使用 return 语句返回值,执行完毕后,会返回新创建的对象。

  如果构造函数中使用 return 语句返回了一个对象,那么表达式就使用这个对象。

  如果构造函数使用return 语句但没有返回值或者返回了一个原始值(primitive value),那么返回的这个值
  会被忽略,还是返回新创建的对象。

3.  函数可以做为值使用,进行赋值,例如:

  function A(name) { ... }

  var b = A;

  b("bailiangxigua");

4.  函数不是原始值,是一种特殊的对象,那么就可以给函数添加属性,函数的属性一般被用作静态变量。

  uniqueInteger.counter = 0;
  // 每次调用这个函数都会返回一个不同的整数
  function uniqueInteger() {
    return uniqueInteger.counter++;
  }

5.  为了不给全局作用域造成污染,很多时候都使用匿名函数包裹使用的变量,此时的函数相当于命名空间。

(function() {
    var a = 23;
    var b = "laeon";
});

posted on 2015-11-25 16:36  百良西瓜  阅读(223)  评论(0编辑  收藏  举报