语法
Object.constructor
返回值
对象的constructor属性返回创建该对象的函数的引用。
// 字符串:String() var str = "张三"; alert(str.constructor); // function String() alert(str.constructor === String); // 数组:Array() var arr = [1, 2, 3]; alert(arr.constructor); // function Array() alert(arr.constructor === Array); // 数字:Number() var num = 5; alert(num.constructor); // function Number() alert(num.constructor === Number); // 自定义对象:Person() var p = new Person(); alert(p.constructor); // function Person() alert(p.constructor === Person); // JSON对象:Object() var o = { "name" : "张三"}; alert(o.constructor); // function Object() alert(o.constructor === Object); // 自定义函数:Function() function foo(){ alert("CodePlayer"); } alert(foo.constructor); // function Function() alert(foo.constructor === Function); // 函数的原型:bar() function bar(){ alert("CodePlayer"); } alert(bar.prototype.constructor); // function bar() alert(bar.prototype.constructor === bar);
// 自定义对象:Person()function Person(){ this.name = "CodePlayer";}var p = new Person();alert(p.constructor); // function Person(){ this.name = "CodePlayer"; }alert(p.constructor === Person); // true// JSON对象:Object()var o = { "name" : "张三"};alert(o.constructor); // function Object() { [native code] }alert(o.constructor === Object); // true// 自定义函数:Function()function foo(){ alert("CodePlayer");}alert(foo.constructor); // function Function() { [native code] }alert(foo.constructor === Function); // true// 函数的原型:bar()function bar(){ alert("CodePlayer");}alert(bar.prototype.constructor); // function bar(){ alert("CodePlayer"); }alert(bar.prototype.constructor === bar); // true所有对象都会从它的原型上继承一个 constructor 属性
JavaScript 内部会执行:
1.为该函数添加一个原形(即 prototype)属性
2.为 prototype 对象额外添加一个 constructor 属性,并且该属性保存指向函数F 的一个引用