Можно использовать typeof
, чтобы определить, является ли значение примитивным или коробочным.
Рассмотрим:
typeof "foo"; // "string"
typeof new String("foo"); // "object"
В сочетании с Object.prototype.toString
мы могли бы определить следующие две функции
var toString = Object.prototype.toString;
var is_primitive_string = function(s) {
return toString.call(s) === "[object String]" && typeof s === "string";
};
var is_boxed_string = function(s) {
return toString.call(s) === "[object String]" && typeof s === "object";
};
Существуют ли любые варианты использования для этих двух функций? (Или аналогичные функции для Number
, Boolean
и т.д.).
Концепция этого вопроса исходила из следующего комментария T.J.Crowder.
Должны ли мы когда-нибудь заботиться о том, является ли ценность у нас примитивной или в штучной упаковке?