2016-11-14 2 views
1

私はパラメータを取る関数を持っているとしましょう。匿名関数を使用してオブジェクトプロパティに値を割り当てる方法はありますか?

この場合私はmatchHeightを使用していますが、私の質問は一般的です。

すべてのオプションをこのような変数に設定しました。その後、

var options = { 
    byRow: true, 
    property: 'height', 
    remove: true, 
}; 

AND関数に渡し:

$('.some_class').matchHeight(options); 

今、私は、関数を使用して動的に除去「remove」プロパティを評価できるようにしたいと思います。私の推測では、次のようなものを使用していました。

var options = { 
    byRow: true, 
    property: 'height', 
    // remove: true, 
    remove: function(){ return true; } 
}; 

しかし、動作しません。これを行う正しい方法は何ですか? 更新:より明確にする。 matchHeightは、関数としてではなく、boolean propertyとして削除を行います。

私の主な目的は、関数を使用してremove: trueのようなブール値を 'エミュレート'することです。

+0

あなたは何を意味しています*動作しませんか。*?そのオブジェクトは大まかに正しいです。これは 'matchHeight'でどのように消費されているかによって異なりますが、このコードは表示されていません。それがあなたのコードでなければ、そのような関数のブール値を入れ替えることはできません。 'options.remove'と' options.remove() 'は別々に呼び出されます。 – Liam

+0

' options ["remove"] '? – guest271314

+0

matchHeightは[booleanプロパティ](https://github.com/liabru/jquery-match-height#usage)として削除します – Sebastian

答えて

1

あなたのアプローチは動作するはずです - このスニペットを参照してください。

var options = { 
 
    byRow: true, 
 
    property: 'height', 
 
    // remove: true, 
 
    remove: function(){ return true; } 
 
}; 
 

 
function myFunc(options) { 
 
    console.log(options.remove()) 
 
} 
 

 
myFunc(options)

2

​​が関数である場合、あなたが実際にそれを呼び出す必要があります:

options.remove() 

ちょうど​​でこの作業をしたい場合は、にする必要があります:

var options = { 
 
    byRow: true, 
 
    property: 'height' 
 
}; 
 

 
Object.defineProperty(options, 'remove', { 
 
    get: function() { return true; } 
 
}); 
 

 
console.log(options.remove);

+0

ありがとうございます。いいえ、「削除」は[ブール値のプロパティ]です(https://github.com/liabru/jquery-match-height#usage) 残念ながら、あなたのコードは動作していません。 – Sebastian

+0

Uhm ...定義して "動作していません"。上記の "run code snippet"をクリックすると、*動作しています。 – deceze

関連する問題