JavaScript 中直接定义在构造函数上的方法和属性是静态的, 定义在构造函数的原型和实例上的方法和属性是非静态的.
定义静态方法:
在实际应用中, 静态方法主要用于操作静态属性.
定义语法:
类名. 属性 = function() {}
静态方法:
- function ClassA(){ // 定义构造函数
- };
- ClassA.func = function(){ // 在构造函数上添加一个属性 (因为函数也是对象)
- console.log("This is a static method");
- }
- var instance = new ClassA(); // 新建一个实例
- ClassA.func(); //This is a static method
- instance.func(); //Error:instance.func is not a function
当定义一个函数后通过 "." 为其添加的属性和函数, 通过对象本身仍然可以访问得到, 但是其实例却访问不到, 这样的变量和函数分别被称为静态变量和静态函数.
- function Obj(){
- }
- Obj.a=0; // 静态变量
- Obj.fn=function(){ // 静态函数
- }
- console.log(Obj.a); //0
- console.log(typeof Obj.fn); //function
- var o=new Obj();
- console.log(o.a); //undefined
- console.log(typeof o.fn); //undefined
来源: http://www.css88.com/qa/javascript/11594.html