constructor定义

MDN: 返回创建实例对象的 Object 构造函数的引用
菜鸟: 返回创建对象属性创建的函数
W3C: 返回对创建此对象的数组函数的引用
个人理解:返回创建这个函数的源函数,如果是基本类型就返回对应的A8构造源函数

javascript中对象constructor——Object.prototype.constructor-QUI-Notes

案例:

let aa = new Array();
let bb = {
x:1,
y:2
};
let cc = false;
let dd = "七娃就是陈小知啊!"

function ee(x){
this.x = x
}
let ff = new ee(10)
console.log(aa.constructor) // ƒ Array() { [native code] }
console.log(bb.constructor) // ƒ Object() { [native code] }
console.log(cc.constructor) // ƒ Boolean() { [native code] }
console.log(dd.constructor) // ƒ String() { [native code] }
console.log(ee.constructor) // ƒ Function() { [native code] }
console.log(ff.constructor) //ƒ ee(x){ this.x = x}

注意: [native code]是v8引擎natives.js返回的字符串,并非javascript的代码

那么constructor有什么实际用处?

1.判断类型

 console.log( aa.constructor == Array )  //true

             
2.获取函数的信息

 

console.log( bb.constructor.length ) // 1

             

不过,知乎上也有人说:“constructor其实没有什么用处,只是JavaScript语言设计的历史遗留物。由于constructor属性是可以变更的,所以未必真的指向对象的构造函数,只是一个提示。不过,从编程习惯上,我们应该尽量让对象的constructor指向其构造函数,以维持这个惯例”。

个人觉得,存在既有意义!肯定有其道理!