Проверка на Object
Как лучше всего проверить переменную на "чистый" Object?
typeof variable == 'object' выдаст на любом объекте/прототипе и т.д. variable instanceof Object также как и выше, но ещё и на ф-ции. Как лучше всего проверить объект именно на "чистый" Object? Т.е. только на такие: var obj = {}; var obj2 = new Object; Звучит, наверное, бредово. Мне это нужно для строгой типизации, чтобы не могли в метод передать левый объект с "чужого" прототипа и т.д. Вот такие решения появились в голове: variable instanceof Object && variable.__proto__.__proto__ == null //или variable instanceof Object && variable.__proto__.constructor == Object |
|
Ruslan_xDD,
а просто нельзя ? variable.constructor === Object |
рони, ага, так и сделаю :)
isNativeObject: function(object) { return object instanceof Object && object.constructor === Object; } Хотя нет! var a = {constructor: alert}; console.log(a.constructor === Object); //false |
alert(Object.getPrototypeOf({}) === Object.prototype) с фреймами работать не будет |
isNativeObject: function(object) { return Object.prototype.toString.call(object) === '[object Object]'; } Во. |
Цитата:
class Foo {} let bar = new Foo(); alert(Object.prototype.toString.call(bar)); |
Цитата:
Цитата:
|
pureJS, ну и что что выдает [object Object] создан то не так:
Цитата:
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 12:44. |