一个function就一个对象,它可以提供一个创建static类型变量的办法。
javaScript中没有static关键字,但是我们能直接将此类型的变量放入对象中。
这样就可以安全的对函数重命名。
static methods:
跟static类型的变量类似,只是这里关注的是方法
Animal.showCount就是一个static类型的方法
是不是很简单!
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
当然,全局变量也能实现counter的功能,但是static类型的额变量有更好的组织结构。
使用arguments.callee替换f可以使代码更通用:
function f() {
arguments.callee.count = ++arguments.callee.count || 1
alert("Called " + arguments.callee.count + " times")
}
这样就可以安全的对函数重命名。
static methods:
跟static类型的变量类似,只是这里关注的是方法
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
Animal.showCount就是一个static类型的方法
是不是很简单!