Привет, ребята! Как дела?
В прошлый раз я обсуждал с коллегой, который в Питоне был объектом. Четные числа. Чтобы показать это, я только что сделал следующее:
print((2).__add__(2)) # should print 4
То есть номера имеют Методы Отказ То же самое верно для других языков программирования, таких как Ruby. Однако в основном каждый другой язык программирования (включая JavaScript) у нас есть примитивы. Как мы их создаем? Ну, с одной или двойной кавычки, как это:
let a = "foo"
Если мы возьмем тип этой переменной, это будет типовая строка:
console.log(typeof a) // "string"
Как мы создаем строковые объекты? Нравится:
let b = new String(a) console.log(typeof b) // "object"
Таким образом, если мы сравним значения А
и преступность
мы получим:
console.log(a == b) // true console.log(a === b) // false
Как вы знаете, ==
Оператор будет сравнивать для равенства после выполнения любых необходимых преобразований типа. ===
Оператор не будет делать преобразования. И как А
и B
имеют разные типы, то мы получаем ложь
Отказ
Мы также можем получить примитивы от Строка
звонки в контексте неконструктора. Это значит, называется без Новый
ключевое слово).
let c = String(a) console.log(typeof c) // "string" console.log(a == c) // true console.log(a === c) // true
Как вы видите, на этот раз ===
Оператор возвращает правда
потому что А
и C
оба примитивов.
Но тогда, почему мы можем назвать методы примитивов?
Конечно, мы можем сделать что-то вроде этого:
console.log(a.length) // 3 console.log(a.toUpperCase()) // "FOO"
Мы можем получить Длина
Свойство примитива и позвонить Tourpercase
метод. Чего ждать? Как у примитивы есть свойства и Методы ?
Ну, они этого не делают. Это зависит от контекст Отказ
Когда метод должен быть вызван на примитивную строку или наличие свойств происходит, JavaScript Будет автоматически обернуть примитивную строку и позвонить в метод или выполнить поиск свойств Отказ
То же самое происходит с другими примитивами в JavaScript:
- Число
- Бинти
- Логический
- Символ
Чтобы получить примитивное значение с этих объектов, просто позвоните ValueOf ()
метод. Например:
let d = b.valueOf() console.log(a == d) // true console.log(a === d) // true
Довольно круто!
Оригинал: “https://dev.to/davidarmendariz/javascript-primitives-have-methods-and-properties-wait-what-h26”