2016-05-25 5 views
2

このコードをjavascriptコンソールに入力すると、これはエラーではなく、代わりに実行されます。問題があるこのコードはなぜjavascriptで動作しますか?オブジェクト内の関数

var a = { 
    b:"123", 
    update(){ 
    console.log("hello"); 
    } 
} 

update()は、functionキーワードを持っていないと私はオブジェクトaのプロパティをチェックするとき、私は得る:Javascriptを実際にここで何をしているのです

b: "123" 
update: function() 
__proto__: Object 

+2

^^^^^ただし、es6のみ –

答えて

4

ECMAスクリプト6では、作成中にオブジェクトのプロパティを定義することができます。:はありません。

例えば、

var data = 100; 
var a = { data }; 
console.log(a); 
// { data: 100 } 

は同様に、あなたのケースでは、あなたは1がbと呼ばれ、他の一つはupdateと呼ばれ、bが100、updateが実際に呼び出される関数オブジェクトである場合には、2つのプロパティを作成しているupdate

注それhere


詳細についてはこちらをご覧ください:これはECMA Scriptであなたはまだこのように、機能しているプロパティを作成するECMAスクリプト5の方法を使用することができます6.を導入だけ簡略表記であります

var a = { 
    b: "123", 
    update: function update() { 
    console.log("hello"); 
    } 
} 
+0

正確には、2つのタイプの略記オブジェクトリテラル表記があります。 1つは省略名のプロパティ名と呼ばれ、他の短縮名のメソッド名は比較的区別されます。後者はOPが不思議に思っているものです。 –

+1

"* ECMAスクリプト6では、作成時にオブジェクトのプロパティを定義することができます。*" *名前/値*は同一でなければなりません。この場合、 'var a = {data};内の* data *は、変数*の*名前付きデータを(スコープ内で)検索します。あなたは明らかにこれを知っていますが、実際に何が起こっているのかを知るために将来の訪問者に指摘すべきだと思いました。 – Marcus

0

javascriptオブジェクトを作成するための構文は次のとおりです。

var person = { 
    firstName: "John", 
    lastName : "Doe", 
    id  : 5566, 
    fullName : function() { 
     return this.firstName + " " + this.lastName; 
    } 
}; 

はここfullnmeオブジェクトのメソッドで、使用してアクセスすることができます -

person.fullname() 

のため、()あなたのコード

var a = { 
    b:"123", 
    update(){ 
    console.log("hello"); 
    } 
} 

ではjavascriptの関数としてそれを理解することです。この説明が役立つことを願っています。

関連する問題