0

これが私が遭遇したものです...私は自分のオブジェクトをデザインします:

var Tab = function () {
    var _data = [], _owners = [], _supportWorkers = [], _watchers = [];
        var _dataLength = function () { return _data.length; };
    return {
        Data: _data,
        Owners: _owners,
        SupportWorkers: _supportWorkers,
        Watchers: _watchers,
            Length: _dataLength
    };
};

var newObject = new Tab();
newObject.Data = [{"my":"data"}];
alert(newObject.Length()); // Length == 0
alert(newObject.Data.length);​ // Length == 1 

これは明らかに参照を変更しますが、オブジェクト内の参照は変更しません。これを回避する唯一の方法は、ゲッター/セッター関数を作成することですか?

4

1 に答える 1

1
var _dataLength = function () { return this.Data.length; };

thisインスタンスを参照するため、外部から機能します。モジュール自体の中からは機能しません。


これが私がそれを行う方法です-あなたのすべてのデータが明らかにされた場合、明らかにするモジュールパターンは無意味です:

var Tab = function () { 
    this.data = [];
    this.owners = [];
    this.supportWorkers = [];
    this.watchers = [];
}
Tab.prototype.dataLength = function () { return this.data.length; }; 
于 2012-09-21T19:09:27.670 に答える