为什么使用带参数的构造函数的单例对象instanceof返回false ?
Why does instanceof return false for a singleton using a constructor with arguments?
我试图检查代码中特定类型的对象。即使对象的原型中有构造函数,它仍然不能返回正确的对象类型,并且在使用instanceof操作符时总是返回"object"。
下面是一个宾语的例子:
Simple = (function(x, y, z) {
var _w = 0.0;
return {
constructor: Simple,
x: x || 0.0,
y: y || 0.0,
z: z || 0.0,
Test: function () {
this.x += 1.0;
this.y += 1.0;
this.z += 1.0;
console.log("Private: " + _w);
console.log("xyz: [" + this.x + ", " + this.y + ", " + this.z + "]");
}
}
});
您将返回具有constructor
属性的对象文字,以设置为函数Simple
。内部构造函数仍然设置为Object
,因此instanceof
返回false。
要使instanceof
返回true,您需要在构造函数中使用this.property
设置属性或使用原型,并使用new Simple()
初始化新对象。
function Simple(x, y, z) {
var _w = 0.0;
this.x = x || 0.0;
this.y = y || 0.0;
this.z = z || 0.0;
this.Test = function () {
this.x += 1.0;
this.y += 1.0;
this.z += 1.0;
console.log("Private: " + _w);
console.log("xyz: [" + this.x + ", " + this.y + ", " + this.z + "]");
}
});
(new Simple()) instanceof Simple //true
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 更改对象的好方法'的原型来更改instanceof的结果
- 用于..在和instanceof中解析对象
- 在Javascript中使用instanceof自定义对象而不使用new关键字
- Instanceof与typeof方法返回的对象类型相矛盾
- 在Javascript中克隆对象,维护instanceof
- 为什么使用带参数的构造函数的单例对象instanceof返回false ?
- 构造函数返回对象的Instanceof为false
- 用instanceof测试对象