var a1 = Object();
var a2 = new Object();
console.log(a1);
console.log(a1.constructor);
console.log(a2.constructor);
var Person = function(){
this.name = "张三"
}
var b1 = new Person();
var b2 = Person();
console.log(b1.constructor);
console.log(b2.constructor);// 出错
由于b2没有使用new操作符,那么他的constructor == undefined。
从理论上讲,a1.constructor也没有定义,但其可以正常返回值,为什么?
与一切对象都继承自Object有关么?
怪我咯2017-04-10 17:47:21
When called in a non-constructor context, Object behaves identically to new Object().
PHP中文网2017-04-10 17:47:21
b2没有用new操作符来创建,所以他的原型链就是Person的原型链,Person创建于function,而function本身其实也是对象,它的constructor指向Function()构造函数~这个构造函数又是Object的实例,称为函数对象,它的constructor指向Object,Object的constructor为null。
迷茫2017-04-10 17:47:21
你最后面的b2 其实不是函数 只是一个函数的返回值而已 所以即便是打印b2 也是undefined 因为Person()这个函数并没有返回值,
如果你写成b2 =Person 的话这个b2 就是一个函数 而函数的构造函数时Function 所以b2.constructor ===Function