Javascript 返回新对象的新对象上发生了什么?

Javascript 返回新对象的新对象上发生了什么?,javascript,Javascript,我有一个对象,如果操作目标尚未注册,我打算返回一个新实例。代码的一个非常简化的版本: var Tangler = (function () { var targets = [], /* Array of targets Tangler operates on, no dupes. */ registry = []; /* Array of Tanglers operating on targets. */ /* Register new T

我有一个对象,如果操作目标尚未注册,我打算返回一个新实例。代码的一个非常简化的版本:

var Tangler = (function () {
    var targets  = [],  /* Array of targets Tangler operates on, no dupes. */
        registry = [];  /* Array of Tanglers operating on targets.         */

    /* Register new Tangler */
    function Tangler_entity(target) {
        this.id = registry.length;
        targets.push(target);
        registry.push(this);
        return this;
    }

    /* Public initiator.
     * Returns existing Tangler if one with target exists. */
    function Tangler(target) {
        var i;

        if (!target)
            return null;
        for (i = 0; i < targets.length; ++i) {
            if (targets[i] === target)
                return registry[i];        /* Return existing Tangler. */
        }
        return new Tangler_entity(target); /* Return new Tangler.      */
    }

    Tangler.prototype.some_function = function () {
        /* Operate on targets[this.id] */
    };

    return Tangler;

})();
但是,运行此代码时会发生什么情况

var tang = new Tangler(some_target);

它们似乎都运行正常,因为在正确的目标中,它们都会得到更新,并且在
new

上不会产生重复。当构造函数在使用
new
时返回一个对象时,返回的对象将被视为新对象object@ArunPJohny:是,但在
new tanger()上
出现双
。另外,如果一个对象执行了
new
,并且返回了一个现有对象,则其中一个对象的更新将反映在这两个对象上。是。。这两个词都指同一个词object@ArunPJohny:那么它不是指向第一个的指针吗?如果它们引用同一个对象,它们怎么可能是新对象?这难道不违背物体的意义吗?或者通过
var x=new Tangler(A)
创建一个新对象,并在使用
new
时将其转换为一个指针,然后在第二个
var y=new Tangler(A)
上,
y
成为指向
x
的指针。如果一个人做了第三个
var z=new Tangler(a)
的话,他最后会得到
z->y->z=Obj
y->z->Obj
。如果一个人没有使用
new
的话,他最终会得到
x=obj
y->x
z->x
。我不这么认为。。。因为作为构造函数的创建者,您显式返回一个对象,因此js引擎将尊重您的意愿,并将您返回的值视为新对象。js引擎将不知道这些值是否已由另一个对构造函数的调用返回
var tang = new Tangler(some_target);