1.8 null、undefined、"string"、10、true和false等原始值不是对象
null和undefined都是非常简单的值,它们不需要构造函数,也没有使用new操作符来将自己创建为JavaScript值。欲使用null或undefined,只需将它们看做操作符来使用即可。从技术上来讲,从构造函数返回的字符、数字、布尔值并不是对象。
下面对原始值和其他原生JavaScript对象之间的差异进行了比较。
<!DOCTYPE html><html lang="en"><body><script>
// 使用原始值的时候,不会创建对象,注意没有使用new关键字
var primitiveString1 = "foo";
var primitiveString2 = String('foo');
var primitiveNumber1 = 10;
var primitiveNumber2 = Number('10');
var primitiveBoolean1 = true;
var primitiveBoolean2 = Boolean('true');
// 确认不是对象类型
console.log(typeof primitiveString1, typeof primitiveString2);
// 输出 'string,string'
console.log(typeof primitiveNumber1, typeof primitiveNumber2);
// 输出 'number,number'
console.log(typeof primitiveBoolean1, typeof primitiveBoolean2);
// 输出 'boolean,boolean'
// 比较用于创建对象的构造函数和new关键字的用法
var myNumber = new Number(23);
var myString = new String('male');
var myBoolean = new Boolean(false);
var myObject = new Object();
var myArray = new Array('foo', 'bar');
var myFunction = new Function("x", "y", "return x * y");
var myDate = new Date();
var myRegExp = new RegExp('\\bt[a-z]+\\b');
var myError = new Error('Crap!');
// 输出 'object object object object object function object function object'
console.log(
typeof myNumber,
typeof myString,
typeof myBoolean,
typeof myObject,
typeof myArray,
typeof myFunction, // 注意所有的function对象返回的类型都是function
typeof myDate,
typeof myRegExp, // 注意RegExp()的类型返回的是function
typeof myError
);
</script></body></html>
希望大家从前面的代码中可以掌握:原始值不是对象。原始值的特殊之处在于它们是用于表示简单值。
时间: 2024-11-05 14:54:13