一、普通函数遵循小驼峰命名规则,构造函数遵循大驼峰命名规则
二、普通函数调用直接函数名加上(),括号中可以填入相应的参数;构造函数的调用需要使用关键字new,例子如下:
// 普通函数声明
function run () {
console.log('I can run!!');
}
// 普通函数的调用
console.log(run());
// 构造函数声明
function Person(name,height) {
this.name = name;
this.height =height;
this.say = function (){
console.log('hello');
};
}
// 构造函数的调用
console.log(new Person('mrgao','170'));
三、调用时返回内容不同
上述代码中执行控制台的结果为:
从结果中可以看到,假如普通函数中没有设置return的内容,调用后,返回的是undefined。而构造函数则是返回了一个叫Person的对象,至于这个Person对象里面的属性跟方法是怎么来的呢?下面我来为大家一一讲解。
说到这里,不得不说的就是构造函数内部的原理。
执行构造函数的时候,其内部会有一些“隐式”操作,以下是执行构造函数内部时的原理步骤:
首先构造函数执行前,会在函数体最前面添加一个this={},然后按照顺序执行代码,然后最后会有return this; 其中 添加this={} 以及return this;操作是隐式操作,js引擎会自动帮我们执行。
注意一点:假如强行要改变构造函数返回的结果也是可以的,可以在构造函数里面添加return语句,但是除了{}、[]、以及function类型会被如实返回,其他return的情况都会返回原来的构造函数的对象,例子如下:
// 构造函数声明
function Person(name,height) {
this.name = name;
this.height =height;
this.say = function (){
console.log('hello');
};
return 1
}
// 构造函数的调用
console.log(new Person('mrgao','170'));
//Person {name: "mrgao", height: "170", say: ƒ}
return 1但是得到的却是Person对象,但是当改为return 任意对象数组或者函数都会如实返回。