1

私は少しグーグルで調べましたが、私が何を求めているのかわからないか、これが不可能なようです。多分前者だと思います。

私がオブジェクトを持っている場合

obj = {
  func : function(){
    return 'hello';
  }
}

そして、私は通常alert(obj.func())、もちろん取得します"hello"

しかし、単純に変数になりたい場合obj.func、どうにかしてそれは可能ですか? alert(obj.func)関数にパラメーターを渡すことはありません。戻り値を、関数呼び出しではなく、のような単純な変数として参照したいだけです。

ありがとう。

4

4 に答える 4

6

これを試して :

obj = {
  func : (function(){
    return 'hello';
  })()
}
于 2013-02-14T22:24:09.923 に答える
2

あなたが話しているのはゲッターです:それはプロパティとして機能する関数です。javascript 1.8.5以降の標準です。つまり、古いブラウザでは処理できません。
構文は次のとおりです。例を使用します。

obj = {
   get func() {  return "hello" ; }
};
// use like this :
console.log(obj.func);

ほとんどの場合、セッターも定義する必要があります。これも、プロパティのように動作する関数です。構文は次のようになります:

obj = {
    get func()    { return this._innerText ; },
    set func(txt) { this._innerText = txt  ; },
    _innerText  : "hello" 
};

console.log(obj.func) ;   // output is hello
obj.func = "godd bye" ;
console.log(obj.func) ;   // output is good bye

明らかに、簡単な例でよくあることですが、これはあまり役に立ちません。

ゲッター/セッターを使用して度からラジアンへのコンバーターを見てみましょう:

 var Angle = {
        get degree ()        { return this._degree ; },
        set degree (dg)      { this._degree = dg   ; },
        get radian ()        { return 2*Math.PI*this.degree/360 ; },
        set radian (rd)      { this._degree = rd * 360 / (2*Math.PI) ; },
        _degree  : 0
} ;
// you can use :
Angle.radian = Math.PI / 2;
console.log ( Angle.degree );    // -->> output is 90
Angle.degree=45 ;
console.log(Angle.radian) ;      // --> output is 0.7853... which is PI/4

また、標準プロパティとゲッター/セッターの両方を定義できるObject.definePropertyを確認することもできますが、より多くのオプション、特にプロパティを「非表示」にして列挙できないようにするオプションがあります。

詳細については、https:
//developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/get https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/set https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty

于 2013-02-14T23:00:47.910 に答える
2

はい、簡単です!

var obj = {
  func :  'hello'
};

alert(obj.func);

この作業フィドルを参照してください

計算値または sth にしたい場合。関数にすることはできますが、単純なプロパティのように呼び出すことができます。

var obj = {
  func :  (function(){return 'hello';})()
};
于 2013-02-14T22:24:46.517 に答える
-1
    var varFunc = function() { alert("hello"); }
    varFunc();
于 2013-02-14T22:24:48.460 に答える