1

私のプロジェクトでは、2 番目のオブジェクトの別のインスタンスを作成したオブジェクトのインスタンスを取得する必要があります。

2番目のオブジェクトのコンストラクターでインスタンスを送信することで問題を回避しましたが、より良い解決策を探しています

例えば:

最初のオブジェクト (親)

    function AnimalsList()
    {
            var _list = new Array();
            this.List = _list;

            this.Add = function(name)
            {
                    _list.push(new Animal(name),this);
            }
    }

2 番目のオブジェクト (子)

    function Animal(name, parent)
    {
            this.Name = name;

            this.GetList = function()
            {
                    return parent
            }
    }

この場合、「GetList」関数はより論理的に最初のオブジェクトに含まれていることはわかっていますが、これは単なる例です。

使用しようとしましthis.constructorたが、インスタンスではなく関数を返します

問題をうまく説明できたと思いますが、私は英語が下手です!

ありがとう

4

5 に答える 5

0

この情報は、関数のcaller プロパティを介して取得できる場合があります。これは ECMAScript 標準の一部ではありませんが、すべての主要なブラウザーでサポートされています。

とはいえ、今のやり方をそのまま続けたほうがよさそうです。現在のメソッドはより明示的であり、プログラムの関数呼び出し構造を動物オブジェクトのプロパティに直接関連付けていません。これはおそらくより良いモデルです。

于 2013-05-26T03:40:00.210 に答える
0

これはどう:

function AnimalsList()
{
        var _list = new Array();
        this.List = _list;

        function getList() { return _list; } 

        this.Add = function(name)
        {
           var obj = { Name:name, GetList:getList };
           _list.push(obj);
           return obj;
        }
}

それから?

于 2013-05-26T03:45:17.950 に答える