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, время: 13:10. |