无法解释该模式的结果

时间:2013-09-04 09:12:32

标签: javascript oop design-patterns prototype

有人可以向我解释我的代码的结果,我不明白这里发生了什么......

这是代码:

var myObj = (function() {


    var testPatt = function(params) {
         jQuery.extend(this.options, this.defaults, params);
    };

    testPatt.prototype = {
        constructor : testPatt,
        options : {},
        defaults : {}
    };

    return testPatt;
})();

var title1 = new myObj({ "title" : "mon titre" });
var title2 = new myObj({ "title" : "mon titre 2ème edition" });

console.log(title1.options.title) //--> "mon titre 2ème edition"; ???????

我希望控制台写“mon titre”但结果是“montitre2èmeedition”,我无法解释为什么......

请参阅fiddle

1 个答案:

答案 0 :(得分:2)

只有一个原型,并且在实例之间共享。

因此,每次创建新对象时,都会覆盖“全局”选项(存储在原型中)。