js 静态方法和实例方法的区别


希望通过这篇笔记,加深自己对 JavaScript 对象里面的静态方法实例方法的理解。
把自己理解整理如下结构:

  • 静态方法和实例方法的声明方式
  • 静态方法和实例方法的调用方式

静态方法和实例方法的声明方式

1
2
3
4
5
6
7
8
9
10
11
12
function user(a, n){
this.a = a||'年龄';
this.n = n||'名字';
}
//声明静态变量
user.sayname = function(){
alert(this.name);
}
//声明动态变量
user.prototype.sayname2 = function(){
alert(this.name);
}

静态方法和实例方法的调用方式

1
2
3
4
5
6
7
8
9
10
11
12
function A(){
}
A.staticMethod = function(){
alert('静态方法');
}
A.prototype.instaceMethod = function(){
alert('实例方法');
}
A.staticMethod();
var instace = new A();
instace.instaceMethod();

可以这么理解,静态方法是类直接调用,实例方法要new 出来的对象才能调用。

小结

从定义上,实例方法要用到function这个对象中的prototype属性来定义,静态方法通过A.直接定义;
从方法调用上,静态方法可以直接通过A.来调用,实例方法要通过先定义一个引用变量,指向构造函数定义的新对象。