静态变量和方法

以下为《JavaScript.info》教程的部分译文。

静态变量和方法

1.静态变量
2.静态方法

函数是一个对象,为我们提供了一个极好的方式来创建静态变量,或者换句话说,这个变量存在于多次调用过程中。
比如,我们希望得到一个记数函数调用的变量。

静态变量

有许多语言允许在一个变量前面加一个static关键词,加了关键词的变量在下次调用过程中不会被清除。
PHP中的静态变量举例:

function f() { // PHP code!
  static $count = 0;
  echo ++$count;
}
f(); f(); f(); // 1 2 3

在JavaScript中没有static关键词或其他类似的词,但是我们可以把数据直接放在函数里面(像在其他任何对象一样)

function f() {
  f.count = ++f.count || 1 // f.count is undefined at first 
  alert("Call No " + f.count)
}
f(); // Call No 1 
f(); // Call No 2

当然,一个全局变量能够保持记数,但是利用静态变量的方式能够得到更优的结构体系。
用arguments.callee替代f的代码更为通。

 function f() {
  arguments.callee.count = ++arguments.callee.count || 1 
  alert("Called " + arguments.callee.count + " times")
}

现在,你可以放心的重命名这个函数了。

静态方法

跟静态变量类似,静态方法也绑定到函数上面,一般用于对象。

function Animal(name) {
  arguments.callee.count = ++arguments.callee.count || 1 
  this.name = name
}
Animal.showCount = function() {
  alert( Animal.count )
}
var mouse = new Animal("Mouse")
var elephant = new Animal("elephant")
Animal.showCount()  // 2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载文章至:http://www.cnblogs.com/jj-chenjunjie/p/5331107.html...
    亲吻大海的鲨鱼阅读 502评论 0 1
  • java中被static修饰的成员称为静态成员或者类成员,它属于这个类所有,而不是某个对象所有,即被类的所有对象所...
    xiao_333阅读 333评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 懒虫 hello 我zainali a jifaf
    rocketsoft阅读 313评论 0 1
  • 1.上班感觉太忙了也不好,太闲了也不好。 2.上班不能一下班就走,有事你必须和上司说明白。 3.上班领导不安排你事...
    SSDf阅读 259评论 0 0