![[JavaScript] 普通函数和构造函数的一些区别](http://www.beasure.com/storage/article/2019-03-06/cover-29.jpg)
构造函数本质也是普通函数,但习惯首字母大写、必须用 new 调用。本文用代码示例对比二者在对象创建、instanceof 识别与 call 冒充上的差异。
构造函数也是一个普通函数,创建方式和普通函数一样,但习惯上首字母大写。
function objectone(text){ // 普通函数
var test = new Object();
test.t = 300;
test.run = function(){
return (this.t - text);
}
return test;
}
var Object1 = objectone(1); // 普通函数:直接调用function Objecttwo(text){ // 构造函数,this 相当于后台自动 new Object
this.t = 300;
this.run = function(){
return (this.t - text);
}
// 不需要 return,无需返回对象引用
}
var Object2 = new Objecttwo("1"); // 构造函数必须用 new 调用// alert(Object1.run()); //299
// alert(Object2.run()); //299
// alert(Object1 instanceof objectone); false // 不能识别对象
// alert(Object2 instanceof Objecttwo); true // 可识别对象引用来自 Objecttwo
// alert(Objecttwo("1")); // undefined,不可用普通函数方式调用
var Object3 = new Object();
Objecttwo.call(Object3, 2); // 构造函数对象冒充
// alert(Object3.run()); //298