2011-12-29 3 views
5

Можете ли вы установить the internal [[Class]] property объекта ECMAScript?Можете ли вы установить внутреннее свойство [[Class]] объекта ECMAScript?

+2

Обратите внимание, что внутренний [[Class]] объект будет удален в ES6. – Raynos

+0

@Raynos Интересно. Итак, как будет работать функция «Array.isArray()» и подобные функции? –

+0

не уверены, они будут использовать некоторое разумное обнаружение, возможно, 'Array.protototype.isPrototypeOf (someArray);' – Raynos

ответ

1

Вы не можете обмануть приличные javascript-двигатели.

Вы можете обмануть пользователь коды земли с

x.toString = function() { 
    return '[object Array]'; 
} 
+5

Это не будет работать с' Object.prototype.toString.call (object) '. – xfix

+0

@xfix Всегда можно переопределить 'Object # toString' (хотя и не рекомендуется вообще) – minmaxavg

+0

@minmaxavg Но причина, по которой хотелось бы переопределить' [[class]] ', обычно потому, что они хотят использовать его с Object.prototype .toString.call', чтобы получить тип объекта. – Taurus

Смежные вопросы