只是出于好奇,为了做一个我想做的小实验,是否可以在创建对象后更改它的类型?
通过更改它的类型,我的意思是让对象响应 instanceof 运算符,如下所示:
(如您所见,我尝试更改构造函数,但没有成功)
var MyConstructor = function() { this.name = 'no name' };
undefined
var myInstance = { name: 'some name' }
undefined
myInstance instanceof Object
true
myInstance instanceof MyConstructor
false
myInstance.constructor
function Object() { [native code] }
myInstance.constructor = MyConstructor
function () { this.name = 'no name' }
myInstance instanceof Object
true
myInstance instanceof MyConstructor
false
我想我可以用 new MyConstructor() 创建一个新对象,然后从中删除每个属性,然后从 myInstance 复制每个属性,但想知道是否存在更简单的方法...
- 更新 -
我确实知道该__proto__
属性的存在,我只是预先将其丢弃,因为我知道该事件虽然在大多数浏览器中实现,但它并不是标准的一部分。