Max—— 前端攻城狮 's Blog

A Simple pure blog generated by jekyll

Js之静态方法与实例方法的区别

<< Back

js之静态方法与实例方法的区别

静态方法

静态方法是指不需要声明类的实例就可以使用的方法。由于Javascript中没有类的概念,所以这里看成函数对象的方法调用就行。

function staticClass() { }      // 声明一个类
staticClass.staticMethod = function() { alert("我是静态方法!") };    // 创建一个静态方法
	

由于Javascript的函数式对象,函数名是指向该对象的指针,所以可以动态的为函数添加静态方法,并可以合法调用。

staticClass.staticMethod();    // 我是静态方法!
	

实例方法

实例方法是指必须要先使用"new"关键字声明一个类的实例, 然后才可以通过此实例访问的方法。实例方法一般定义在原型对象上面。

function instanceClass() { };       // 声明一个类
instanceClass.prototype.instanceMethod = function() { 
	alert("我是实例方法!") 
};       // 创建一个实例方法
	

上面首先声明了一个类instanceClass, 接着为其添加了一个实例方法instanceMethod到他的原型对象上面。

如果直接调用会报错。类型错误1

instanceClass.instanceMethod();     //  Uncaught TypeError: undefined is not a function 
	

需要首先实例化后才能调用

var result = new instanceClass();
result.instanceMethod();     // 我是实例方法!
	

两者的区别

  • 对于静态方法可以直接调用 staticClass.staticMethod();
  • 但是动态方法不能直接调用 instanceClass.instanceMethod(); //语句错误, 无法运行。必须通过new 操作符实例化之后才能在实例化的对象上调用。

发表于: 25 Sep 2014