2016-12-18 4 views
0

日付を破棄する方法はありますか?ES6デストラクション日付

私はオブジェクトについて知っていますが、このようなことをすることができます。

var o = {p: 42, q: true}; 
var {p, q} = o; 

console.log(p); // 42 
console.log(q); // true 

ここでは、ES6で次のことを行うより良い方法はありますか?このためにオブジェクトの破棄のようなものが存在しますか?

function getFormattedDate(date) { 
    return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`; 
} 
+4

プロパティが機能していると呼び出される必要がある場合は、非構造は本当にオプションではありません。 –

+0

あなたはすでに持っているコードに間違いがありますか? –

+0

自分で日付の書式を設定しないでください。代わりに、 '' Int -.DateTimeFormat'(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)を 'en-US'のロケールで使用してください。 –

答えて

1

あなたは、Dateオブジェクトを継承したオブジェクトを作成し、月、日、年のためにゲッターを追加し、あなたはそれをdestructureことができます。これにはいくつかのオーバーヘッドがありますが、日付をたくさん使用するとこれは価値があるかもしれません。さらに、1か月に1を追加する必要があるなど、問題を修正することができます。

あなたが直接Dateオブジェクトにゲッターを追加することができますが、この は悪い習慣です。あなたはこのスレッド - Why is extending native objects a bad practice?でそれについてもっと詳しく知ることができます。

class EDate extends Date { 
 
    get month() { 
 
    return this.getMonth() + 1; 
 
    } 
 
    
 
    get day() { 
 
    return this.getDate(); 
 
    } 
 
    
 
    get year() { 
 
    return this.getFullYear(); 
 
    } 
 
} 
 

 
const getFormattedDate = ({ month, day, year }) => `${month}/${day}/${year}` 
 

 
console.log(getFormattedDate(new EDate())); 
 

 
// since Date can receive another Date as input, you can do this as well 
 

 
const date = new Date(); 
 

 
console.log(getFormattedDate(new EDate(date)));

関連する問題