2

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

这是代码:

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”,我无法解释为什么......

小提琴

4

1 回答 1

2

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

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

于 2013-09-04T09:14:45.417 回答