关于定义类或对象,具体内容参考w3school
在es6以前应用最广的:混合的构造函数/原型方式
联合使用构造函数和原型方式,就可像用其他程序设计语言一样创建对象。这种概念非常简单,即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)。
这种方式是 ECMAScript 采用的主要方式,它具有其他方式的特性,却没有他们的副作用。
有4中方式来调用JavaScript函数:
- 作为函数
- 作为方法
- 作为构造函数
- 通过他们的call()和apply()方法间接调用
函数调用:
对于普通函数调用,函数的返回值成为调用表达式的值。如果该函数返回是因为解释器到达结尾,返回值就是undefined。如果函数返回是因为解释器执行到一条return语句,返回值就是return之后的表达式的值,如果没有return语句没有值,则返回undefined。
方法调用:
通过对象.方法()的方式来调用。但是方法调用和函数调用有一个重要区别,即:调用上下文。
构造函数调用:
如果函数或者方法调用之前带有关键字new,它就构成构造函数调用。JavaScript构造函数调用的语法是允许省略实参列表和圆括号的。凡是没有形参的构造函数调用都可以省略圆括号,比如,下面两行代码是等价的:
var o = new Object();
var o = new Object;
构造函数调用创建一个新的空对象,这个对象继承自构造函数的prototype属性。
构造函数通常不使用return关键字,他们通常初始化新对象,当构造函数的函数体执行完毕时,他会显示返回。
间接调用
JavaScript中的函数也是对象,和其他JavaScript对象没什么两样,函数对象也可以包含方法。其中的两个方法call()和apply()可以用来间接地调用函数。两个方法都允许显示指定调用所需的this值,
类和模块
在JavaScript中,类的实现是基于其原型继承机制的。