javascript - 不使用new关键字创建Object对象为什么constructor有值?
PHP中文网
PHP中文网 2017-04-10 17:45:21
0
3
343
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有关么?

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(3)
刘奇

When called in a non-constructor context, Object behaves identically to new Object().

洪涛

b2没有用new操作符来创建,所以他的原型链就是Person的原型链,Person创建于function,而function本身其实也是对象,它的constructor指向Function()构造函数~这个构造函数又是Object的实例,称为函数对象,它的constructor指向Object,Object的constructor为null。

迷茫

你最后面的b2 其实不是函数 只是一个函数的返回值而已 所以即便是打印b2 也是undefined 因为Person()这个函数并没有返回值,
如果你写成b2 =Person 的话这个b2 就是一个函数 而函数的构造函数时Function 所以b2.constructor ===Function

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿