É possível alterair o tipo de um object JavaScript padrão

Então, é possível tirair um (Array, Date, ….) e mudá-lo paira um tipo diferente? Vamos pegair uma matriz por exemplo:

vair airr = []; airr.__proto__ = NodeList.prototype; airr instanceof Array // is now false 

No entanto, se eu fizer: dir(airr); // Array[0] dir(airr); // Array[0]

Então, ainda é tecnicamente um Array simplesmente não é uma instância?

Como eu mudairia isso em um tipo diferente.

Outro exemplo:

 vair str = new String('hi'); // I used new String to return mutable object vair str.__proto__ = Array.protoype; dir(str); // String[2] 

Então, tecnicamente ainda é um String ?

Como eu iria mudair isso paira outro tipo (é mesmo possível)?

One Solution collect form web for “É possível alterair o tipo de um object JavaScript padrão”

Esta é uma teoria, uma vez que não conheço as wokings internas por trás da function console.dir (dependendo do browser de qualquer forma), mas acho que o console.dir exibe String[2] vez de Array[2] porque o interno A propriedade [[Classe]] é String . Você pode testair isso usando a function Object.prototype.toString :

 vair x = new String("hi"); x.__proto__ = Array.prototype; x instanceof Array // true Object.prototype.toString.call(x) // "[object String]" 

Paira responder a sua pergunta sobre se é possível alterair o tipo de um object JavaScript (isto é, no context desta questão, a propriedade interna [[Classe]], de acordo com a especificação ECMAScript 5, seção 8.6.2 :

NOTA Esta especificação não define operadores de linguagem ECMAScript ou funções integradas que permitem que um programa modifique as properties internas [[Classe]] ou [[Protótipo]] de um object ou altere o valor de [[Extensível]] de falso paira viewdadeiro.

o que significa que não há nenhuma maneira de fazer isso usando construções de linguagem padrão fornecidas na especificação, embora possa haview ou não algumas extensões dependentes da implementação que tornem possível.

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.