在这种情况下,原型对象不再具有构造函数属性。这只是一个空的对象。但是,尽管如此,以某种方式,新的obj. -constructor仍然创建一个空的对象。如何? 功能

问题描述 投票:0回答:1
constructor

属性。这只是一个空的对象。但是,尽管如此,还是以某种方式仍然创建一个空的对象。怎么样?


new obj.constructor

在这里也创建了对象。在Chrome浏览器的控制台中,它显示为
function Constructor() { this.name = 'Kira'; this.age = 35; this.city = 'New-York'; }; Constructor.prototype = {}; let obj = new Constructor; let obj2 = new obj.constructor; console.log(obj2); //{}

enter image description hereString

怎么样?这里如何创建对象?
    
当您将原型设置为

function User(name) { this.name = name; } User.prototype = {}; let user = new User('John'); let user2 = new user.constructor('Pete'); console.log(user2);

时,这并不意味着没有属性。这意味着唯一的属性是您在新对象上找到的属性。特别是,

{}

属性来自原型,指向
javascript object prototype
1个回答
1
投票
constructor



Object

const o = {}; console.log("has constructor property:", "constructor" in o); console.log("constructor property is own:", o.hasOwnProperty("constructor")); console.log("constructor property comes from prototype:", Object.getPrototypeOf(o).hasOwnProperty("constructor")); console.log("constructor property is Object():", o.constructor === Object);

打电话给

new obj.constructor

再次呼叫全局

new Object
,所以它与
function Foo() {}; Foo.prototype = {}; let obj = new Foo; console.log(obj.constructor === Object); console.log(obj.constructor === ({}).constructor); let obj2 = new obj.constructor; console.log(obj2); //{}
相同。而且,如果您传达具有对象包装器的值,则可以从构造函数中获得该包装器:

new user.constructor('Pete');


    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.