【问题标题】:Can't explain result of that pattern无法解释该模式的结果
【发布时间】:2013-09-04 09:12:31
【问题描述】:

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

这里是代码:

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”,但结果是“mon titre 2ème edition”,我无法解释为什么......

fiddle

【问题讨论】:

    标签: javascript oop design-patterns prototype


    【解决方案1】:

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

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

    【讨论】:

    • 感谢 Karoly,在阅读了您的答案并进行了一些搜索之后,它看起来像是一个单例模式......我应该如何重写我的代码以允许 myObj 的多个实例?
    • 嗯?单例模式强制在任何时候最多有一个类的单个对象。如果你想要多个实例,不要使用这种模式
    猜你喜欢
    • 2013-04-22
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多