JavaScript 对象基础:常量、属性访问与删除详解

作者:纸飞机时间:2026-10-28 12:35:35浏览:164

本文详解 JavaScript 中对象的使用,解析数字常量为何报错及三种对象化方法。对比点操作符与中括号操作符的访问差异,深入讲解 delete 删除属性的原理,并强调使用 var 声明变量以避免污染全局对象的重要性。


false.toString(); // 'false'
[1, 2, 3].toString(); // '1,2,3'

function Foo(){}
Foo.bar = 1;
Foo.bar; // 1

数字常量的对象化误解与处理

数字常量常被误认为无法作为对象处理,但这实际上是 JavaScript 解析器在识别点操作符时,将其误判为浮点数小数点所导致的语法错误。

2.toString(); // raises SyntaxError

实际上,我们可以通过多种技巧让数字常量表现为对象。


2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first

对象作为哈希表的使用

对象作为数据类型

在 JavaScript 中,对象可用作哈希表,核心在于维护键值对的映射关系。使用 {} 符号可创建简单对象,该对象继承自 Object.prototype,且自身不包含任何自定义属性。


var foo = {}; // a new empty object
// a new object with a 'test' property with value 12
var bar = {test: 12}; 

对象属性的访问方式对比

访问对象的属性

JavaScript 提供了两种访问对象属性的方式:点操作符(.)和中括号操作符([])。


var foo = {name: 'kitten'}
foo.name; // kitten
foo['name']; // kitten

var get = 'name';
foo[get]; // kitten

foo.1234; // SyntaxError
foo['1234']; // works

这两种操作符的功能几乎一致,主要区别在于中括号操作符支持动态属性名设置,且允许属性名包含语法上不允许的字符(如数字开头),如前例所示。

使用 delete 删除属性与变量声明规范

删除对象的属性

删除属性的唯一正确方法是使用 delete 关键字。仅将属性值赋值为 undefined 或 null 并不能删除属性,只是移除了其关联的值。


var obj = {
 bar: 1,
 foo: 2,
 baz: 3
};
obj.bar = undefined;
obj.foo = null;
delete obj.baz;

for(var i in obj) {
 if (obj.hasOwnProperty(i)) {
 console.log(i, '' + obj[i]);
 }
}

上述代码输出 bar undefined 和 foo null,仅 baz 被真正删除。需注意,delete 仅能删除属性,无法删除变量。因此,定义变量时必须养成使用 var 关键字的习惯,因为省略 var 会将变量错误地注册为全局对象的新属性。

数字常量的对象化误解与处理

该示例清晰表明,a 是局部变量,而 b 仅是全局对象的一个属性。

特殊字符与保留字属性命名

命名对象的属性


var test = {
 'case': 'I am a keyword, so I must be notated as a string',
 delete: 'I am a keyword, so me too' // raises SyntaxError
};

对象属性可使用普通标识符或字符串命名。由于 JavaScript 解析器的历史遗留问题,示例中的第二种写法在 ECMAScript 5 标准下会抛出错误。原因是 delete 属于保留关键字,因此必须使用字符串常量进行命名以兼容旧版解析器。

作者最新文章