为什么instanceof使用带参数的构造函数为单例返回false?

时间:2011-09-17 23:56:43

标签: javascript constructor singleton instanceof

我正在尝试在代码中检查特定类型的对象。即使对象在其原型中具有构造函数,它仍然无法返回正确的对象类型,并且在使用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 + "]");
        }
    }
});

1 个答案:

答案 0 :(得分:1)

您将返回一个具有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