首先,您正在爲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'));
好吧,我知道你想在格式24/03/2016
日期,這樣的話你可能會添加一些額外的功能,但我不會把它定義的日期,延長內置對象是壞一般的想法,因爲你永遠不知道在將來的瀏覽器版本中如何改變這些對象的接口,或者你的函數如何被第三方腳本覆蓋。
所以我建議只是聲明它作爲獨立的功能,並在必要時使用。如果有的話,使用stringToDate('24/03/2016')
和Date.stringToDate('24/03/2016')
之間的差異並不大,首先是更短。
你有什麼問題? –
Date.stringToDate不是一個函數... – MKP
通過在'prototype'上指定你的函數,你打算每個Date *實例都有'stringToDate'函數。但是,您的實際意圖是具有綁定到「Date」類型而不是每個實例的* static factory *函數。試試'Date.stringToDate = function(date){..}'來代替。另外,考慮命名它'Date.fromString()' – haim770