Можно использовать 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
и т. Д.)
Концепция этого вопроса взята из следующего комментария TJCrowder .
Должны ли мы когда-нибудь заботиться о том, является ли значение примитивным или коробочным?