aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Angular.js3
-rw-r--r--src/JSON.js2
-rw-r--r--src/apis.js2
-rw-r--r--src/filters.js4
-rw-r--r--test/AngularSpec.js13
5 files changed, 20 insertions, 4 deletions
diff --git a/src/Angular.js b/src/Angular.js
index 16b31d4b..73f2841a 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -317,6 +317,7 @@ function isDefined(value){ return typeof value != $undefined; }
function isObject(value){ return value!=_null && typeof value == $object;}
function isString(value){ return typeof value == $string;}
function isNumber(value){ return typeof value == $number;}
+function isDate(value){ return value instanceof Date; }
function isArray(value) { return value instanceof Array; }
function isFunction(value){ return typeof value == $function;}
function isBoolean(value) { return typeof value == $boolean;}
@@ -431,7 +432,7 @@ function copy(source, destination){
if (source) {
if (isArray(source)) {
destination = copy(source, []);
- } else if (source instanceof Date) {
+ } else if (isDate(source)) {
destination = new Date(source.getTime());
} else if (isObject(source)) {
destination = copy(source, {});
diff --git a/src/JSON.js b/src/JSON.js
index de718527..9fca3bcb 100644
--- a/src/JSON.js
+++ b/src/JSON.js
@@ -72,7 +72,7 @@ function toJsonArray(buf, obj, pretty, stack) {
sep = true;
}
buf.push("]");
- } else if (obj instanceof Date) {
+ } else if (isDate(obj)) {
buf.push(angular['String']['quoteUnicode'](angular['Date']['toString'](obj)));
} else {
buf.push("{");
diff --git a/src/apis.js b/src/apis.js
index ffa2e788..c232e4a9 100644
--- a/src/apis.js
+++ b/src/apis.js
@@ -4,7 +4,7 @@ var angularGlobal = {
var type = typeof obj;
if (type == $object) {
if (obj instanceof Array) return $array;
- if (obj instanceof Date) return $date;
+ if (isDate(obj)) return $date;
if (obj.nodeType == 1) return $element;
}
return type;
diff --git a/src/filters.js b/src/filters.js
index 2dde740c..ee0ef076 100644
--- a/src/filters.js
+++ b/src/filters.js
@@ -199,7 +199,9 @@ angularFilter.date = function(date, format) {
if (isNumber(date)) {
date = new Date(date);
- } else if (!(date instanceof Date)) {
+ }
+
+ if (!isDate(date)) {
return date;
}
diff --git a/test/AngularSpec.js b/test/AngularSpec.js
index b00aa631..23f06887 100644
--- a/test/AngularSpec.js
+++ b/test/AngularSpec.js
@@ -328,3 +328,16 @@ describe('angular service', function() {
expect(result.third).toBeTruthy();
});
});
+
+describe('isDate', function() {
+ it('should return true for Date object', function() {
+ expect(isDate(new Date())).toBe(true);
+ });
+
+ it('should return false for non Date objects', function() {
+ expect(isDate([])).toBe(false);
+ expect(isDate('')).toBe(false);
+ expect(isDate(23)).toBe(false);
+ expect(isDate({})).toBe(false);
+ });
+});