JS构造函数到底如何理解

JavaScript010

JS构造函数到底如何理解,第1张

不同于其它的主流编程语言,JavaScript的构造函数并不是作为类的一个特定方法存在的;

当任意一个普通函数用于创建一类对象时,它就被称作构造函数,或构造器。

一个函数要作为一个真正意义上的构造函数,需要满足下列条件:

1、 在函数内部对新对象(this)的属性进行设置,通常是添加属性和方法。

2、 构造函数可以包含返回语句(不推荐),但返回值必须是this,或者其它非对象类型的值。

上文定义的构造函数CO就是一个标准的、简单的构造函数。

构造函数与工厂函数之间差异:1.工厂函数需要创建对象,以及必须有返回值2.工厂函数针对的都是Object的对象模型,而构造函数可以匹配自定义的对象模型即前者不论创建什么都只有一个xx instanceof Object而后者根据自定义名而定类型,如上举例所示3.构造函数弊端,如果在全局中定义相同的局部变量,容易造成全局污染,因为this.xx如果在局部获取不到,就会去全局中获取4.构造函数可以重写,可以在全局中添加新属性和方法Person.prototype = {},但工厂函数只能在局部添加各自适用场合:构造函数:适应用于大型项目,属性以及方法时常变换的项目工厂函数:适应用于小型项目,或者正在制作过程还没有成型的项目