js中静态方法和实例方法的调用

今天在看Date对象的一个方法时发现了一个新的知识点,

Date.now()
//返回1970-1-1午夜到现在的时间间隔,用毫秒表示
Date.parse()
//解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如:2015-02-31),则返回值为NaN。
Date.UTC()
//根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数

以上三个方法都是静态方法,于是去搜索了一下静态方法,下面写一些自己的理解。

js中有静态方法和实例方法,静态方法是函数自己定义的,而实例方法是通过原型来定义。它们的区别是静态方法是可以直接用类名.方法名去调用的,而实例方法是不可以的,它必须要用实例才可以去调用。

//定义一个function
var Person=function(){};
//在function内声明一个say方法
Person.say=function(){
    console.log('I am a person.');
};
//给function的prototype添加一个getName方法
Person.prototype.getName=function(name){
    console.log('My name is'+name);
}

以上代码中,say方法是直接定义在function中的,它是一个静态方法,可以直接通过Person来调用,而getName方法是在Person的原型中,只有通过Person的实例才可以调用。

Person.say();
//可以执行
Person.getName('jerry');
//会报错,Person不能直接调用其原型中的方法
var jerry=new Person;
jerry.say();
//会报错,Person的实例不能直接调用其父类的方法;
jerry.getName('Jerry');
//可以执行

总结:静态方法只能函数自己来调用,它的实例对象不能调用,而实例方法只能通过它的实例对象来调用,它本身不能调用。

你可能感兴趣的:(笔记)