2016-05-15 9 views
3
function User() { 
    this.firstname = null; 

    get getFirst() { 
     return this.firstname; 
    } 
} 

JavaScriptコンソールがない関数、コンストラクタ、オブジェクト内で呼び出されることを意図されたライン12は働いていない「ゲット」

var Jake = new User(); 
Jake.firstname = "Jake"; 
document.write(Jake.getFirst); 
+2

私はJavaScriptのキーワードを見たことがありません。 ActionScriptでプログラミングしましたか? – NoImaginationGuy

+0

これはゲッターです。ここで詳しく読むことができます:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/getこれらのゲッターはあなたが試している環境に実装されていると確信していますか?それらを使用するには? – Dimkin

+1

@osnapitzkindle:JavaScriptは2009年から有効な 'get'キーワードを持っていました。 –

答えて

0

getの「予期しない識別子」と言って私にエラーを与えます。あなたはUserの関数としてgetFirstを宣言したい場合は、ここにあなたがそれを行うことができ一つの方法です:

function User() { 
    this.firstname = null; 
    this.getFirst = function() { 
     return this.firstname; 
    } 
} 

その後、あなたはまた、関数としてgetFirstを呼び出す必要があります:

var Jake = new User(); 

Jake.firstname = "Jake"; 

document.write(Jake.getFirst()); 
+0

しかし、この質問は関数としてではなく、ゲッターとして機能させる方法です。 – Xufox

+0

「ゲッター」は単なる値を返す関数です。 –

2

私は信じています問題は、documentationで概説されているように、オブジェクトリテラルではなく関数でgetを使用していることです。ちょうどあなたがゲッターを定義するために使用する構文はありません

var User = { 
    firstName: 'Darren', 
    get getFirst() { return this.firstName; } 
} 

alert(User.getFirst); 

https://jsfiddle.net/ecao51n0/

9

。あなたはこのように、オブジェクトリテラルでそれを使用したい:

var foo = { 
    get bar() { 
     return 42; 
    } 
}; 

foo.bar; // 42 

...しかし、あなたのgetがどこにあることではありません。それはそう直接プロパティへのアクセスのように見えた、アクセサ機能だし、ので、私は、ないgetFirstfirstそれを呼ば

function User() { 
    this.firstname = null; 

    Object.defineProperty(this, "first", { 
     get: function() { 
      return this.firstname; 
     } 
    }); 
} 

注:ごgetあなたはdefinePropertyを使用したい、ここでそれを定義するには

伝統的な動詞形で名前を与えられていません::あなただけgetキーワードを取り除くgetFirstと呼ばれる機能を、作成したい場合は

var u = new User(); 
u.firstname = "Paul"; 
u.first; // "Paul" 
this.getFirst = function() { 
    return firstname; 
}; 
// ... 
var u = new User(); 
u.firstname = "Paul"; 
u.getFirst(); // "Paul" 
+2

'Object.defineProperty(' ... ')'の中で、 'value'の代わりに' get'を書くことができ、それは期待どおりに動作します。 'firstname'が' 'Paul ''に実際には設定されていないので、このコードでは '' null'を返します。 – Xufox

+0

@Xufox:LOL、良い点。そして、 'value' /' get'キャッチのおかげで。 –

関連する問題