2016-03-03 103 views
1

我迷迷糊糊的東西奇怪今天無法找到有關此問題的任何信息......的Javascript:對象函數定義

所以,總的來說,你可以做這樣的事情。

var test = { 
    wtf: function() { 
     console.log("Yep"); 
    } 
} 

test.wtf(); // shows "Yep" 

但由於一些錯字我不小心結束了以下,現在我想知道爲什麼這是工作。任何人都可以向我解釋這個嗎?

var test = { 
    wtf() { 
    console.log("Why?"); 
    } 
}; 

test.wtf(); // shows "Why?" 
+2

這是有效的ES6語法。 – 2016-03-03 10:37:45

回答

0

這是ES6中引入的Method Definition syntax。目前支持Chrome,Firefox和Opera的最新版本。

方法的定義

與ECMAScript的2015(ES6),用於在對象的初始化方法定義一個較短的語法開始被引入。它是分配給方法名稱的函數的簡寫。

說明

速記語法類似於在ECMAScript中5推出的getter和setter語法

考慮下面的代碼:

var obj = { 
    foo: function() {}, 
    bar: function() {} 
}; 

現在,您可以縮短這:

var obj = { 
    foo() {}, 
    bar() {} 
}; 

MDN's documentation on Method Definitions

-1

這是因爲你在的EcmaScript-6的環境中工作,

其實JavaScript是不斷變化的,你可以按照進展在: https://kangax.github.io/compat-table/es6/

的方式: 在ECMAScript中-5你只能用這種方式定義一個成員:

var myObject = { 
    someMethod: function() {} 
}; 

ECMASCRIPT-6引入了一些「短漢ds「,合成糖。

var myObject = { 
    someMethod() {} 
}; 

進一步信息可在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions

+0

您的第一個示例已損壞。它在語法上無效。無論如何,一個完整的答案應該給這個構造和參考的名稱。 – 2016-03-03 10:45:15

+0

這只是一個錯誤,'='而不是':'。 最後列出的引用aws。 感謝您的反饋! – Hitmands