trikadin, отличить примитивный тип от другого ?
есть ли простой способ? |
Цитата:
function toString(any) { return Object.prototype.toString.call(any); } function noop() {} alert(toString(1)); alert(toString('text')); alert(toString(true)); alert(toString(Symbol())); alert(toString(undefined)); alert(toString(null)); alert(toString(/1/)); alert(toString([])); alert(toString({})); alert(toString(noop)); alert(toString(new Date())); alert(toString(new Map())); alert(toString(new Set())); alert(toString(new WeakMap())); alert(toString(new WeakSet())); кря-кря :) |
nerv_, я знаю, просто интересно можно ли как то это сделать не проверяя на всем примитивы?
|
function isPrimitive(value) { return !(value instanceof Object); } ? |
Erolast,
function isPrimitive(value) { return !(value instanceof Object); } alert( isPrimitive( new String( "h" ) ) ); |
Так это и не строка-примитив, это String object. Там и другие странности есть:
console.log(new String("h") == new String("h")); //false console.log(typeof new String("h") == "string"); //false |
Erolast, но посути это строка
|
Строка, но не примитив. Объект.
|
Если все же надо включать строки/числа/булевы-объекты (что крайне странно: они не ведут себя как примитивы), то можно так:
function isPrimitiveLike(value) { return value === null || value === undefined || [Boolean, Number, Symbol, String].indexOf(value.constructor) != -1; } |
Есть код
class Parent {} class Child extends Parent { constructor() { this.x = 1; super(); } } на что бабель ругается Цитата:
1. Какого Лена Головач? 2. Разве это прописано в стандарте? Под "это" подразумеваю: - обязательность вызова супер в ребенке в принципе - обязательность вызова супер до работы с this в ребенке |
Часовой пояс GMT +3, время: 15:37. |