JavaScript函数的实例属性和类属性

由于JavaScript函数不仅仅是一个函数,而且是一个类,该函数还是此类唯一的构造器,只要在调用函数时使用new关键字,就可返回一个object,这个object不是函数的返回值,而是函数本身产生的对象。因此在JavaScript中定义的变量不仅有局部变量,还有实例属性和类属性。

函数的变量:局部变量,实例属性,类属性

局部变量:在函数中以var声明的变量

实例变量:在函数中以this前缀修饰的变量

类属性:在函数中以函数名前缀修饰的变量

JavaScript函数的实例属性和类属性

JavaScript函数的实例属性和类属性

Person函数的age属性为实例属性,因而每个实例的age属性都可以完全不同,程序应通过Person对象来访问age属性,national属性为类属性,该属性完全属于Person类,因此必须通过Person类来访问national属性,Person对象并没有national属性,所以通过Person对象访问该属性将返回undefined,而bb则是Person的局部变量,在Person函数以外无法访问该变量