Los tipos de objetos de js se dividen principalmente en dos categorías: tipos de datos básicos (tipos nativos) y tipos de datos de paquetes (tipos de paquetes);
1. Tipos de datos básicos
typeof 123; // 'number'
typeof NaN; // 'number'
typeof 'str'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Math.abs; // 'function'
typeof null; // 'object'
typeof []; // 'object'
typeof {
}; // 'object'
console.log("typeof 123= ",typeof 123);
console.log("typeof NaN= ",typeof NaN);
console.log("typeof 'str'= ",typeof 'str');
console.log("typeof true= ",typeof true);
console.log("typeof undefined= ",typeof undefined);
console.log("typeof Math.abs= ",typeof Math.abs);
console.log("typeof null= ",typeof null);
console.log("typeof []= ",typeof []);
console.log("typeof {}= ",typeof {
});
El efecto es el siguiente:
2. Tipo de datos de embalaje
var a1 = new Number(123) //object
var b1 = new Boolean(true) //object
var c1 = new String('hello') //object
console.log("new Number(123)= ",typeof a1)
console.log("new Boolean(true)= ",typeof b1)
console.log("new String('hello')= ",typeof c1)
El efecto es el siguiente:
El tipo de datos empaquetados se obtiene con new func (). Es un objeto, que no es el mismo que el tipo de datos básicos . Por lo tanto, el tipo de datos empaquetados y el tipo de datos básicos no se pueden juzgar por igualdad con === .
3. Análisis de casos
3.1 Comparar el tipo de datos básico 123 con el tipo de datos de paquete 123
var a1 = 123; //基本数据类型:123, 属于number
var b1 = new Number(123); //包装数据类型:123, 属于object
var bRet = (a1 === b1);
console.log("check a1,b1",bRet)
Comparación de resultados:
3.2 Compare el tipo de datos básico 123 con los datos nativos 123
var a1 = 123; //基本数据类型:123, 属于number
var c1 = Number(123); //原生数据:123, 属于number
var bRet = (a1 === c1);
console.log("check a1,c1",bRet)
Comparación de resultados:
3.3 Resumen
Los datos generados con nuevo son un tipo de empaquetado (tipo de datos de empaquetado) y los datos sin nuevo son un tipo primitivo (tipo de datos básico).