Имеет значение, является ли значение примитивным или упакованным в коробку.

Можно использовать 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 .

Должны ли мы когда-нибудь заботиться о том, является ли значение примитивным или коробочным?

16
задан Community 23 May 2017 в 12:25
поделиться