まず、protoptypeに関数を追加するので、Date自体ではなく、Dateのインスタンスに対してのみ使用できます。
A
コンストラクタ関数と2つの関数someFn
がプロトタイプで定義され、someOtherFn
がA
コンストラクタで定義されている例です。
function A() {
}
A.prototype.someFn = function() {
console.log('someFn');
};
A.someOtherFn = function() {
console.log('someOtherFn');
};
console.log('A.someFn', A.someFn);
console.log('A.someOtherFn', A.someOtherFn);
var a = new A();
console.log('a.someFn', a.someFn);
console.log('a.someOtherFn', a.someOtherFn);
第二に、あなたは新しい日付があなたのためにうまくそれを解析しますが、このような機能を必要としません。
console.log(new Date('2016/03/24'));
[OK]を、私はあなたが形式24/03/2016
の日付を持つようにしたいことがわかり、そうしてあなたは、いくつかの余分な機能を追加するかもしれませんが、私は日にそれを定義しません、組み込みオブジェクトを拡張することは悪いですそのようなオブジェクトのインターフェースが将来のブラウザのバージョンでどのように変化するか、またはサードパーティのスクリプトによって関数がオーバーライドされる可能性があることを決して知りません。
スタンドアロン機能として宣言し、必要に応じて使用することをお勧めします。何かが最初に短い場合は、stringToDate('24/03/2016')
とDate.stringToDate('24/03/2016')
の間に大きな違いはありません。
何が問題になっていますか? –
Date.stringToDateは関数ではありません... – MKP
関数を 'prototype'に代入することによって、各' Date' *インスタンス*に 'stringToDate'関数があることを意図しています。しかし、実際の意図は、各インスタンスではなく、 'Date'型にバインドされた静的なファクトリ*関数を持つことです。代わりに 'Date.stringToDate = function(date){..}'を試してください。また、それを 'Date.fromString()'と命名することを検討してください。 – haim770