JavaScript学习笔记(一)对象和属性
对象属性的使用
JavaScript中的所有变量都可以当做对象使用,除了null和undefined。
false.toString(); // 'false'
[1, 2, 3].toString(); // '1,2,3'
function Foo(){}
Foo.bar = 1;
Foo.bar; // 1
字面值也可以作为对象使用,只不过需要变通方法:
2.toString(); // 出错:SyntaxError
2..toString(); // 第二个点号可以正常解析
2 .toString(); // 注意点号前面的空格
(2).toString(); // 2先被计算
对象作为数据类型
JavaScript的对象可以作为哈希表使用,主要用来保存命名的键与值的对应关系。
使用对象的字面语法-{}-可以创建一个简单的对象,该对象从Object.prototype继承下来,没有任何自定义属性。
var foo = {}; // 一个空对象
// 一个新对象,拥有一个值为12的自定义属性'test'
var bar = {test: 12};
访问属性
使用点操作符或者中括号操作符来访问属性:
var foo = {name: 'kitten'}
foo.name; // kitten
foo['name']; // kitten
var get = 'name';
foo[get]; // kitten
foo.1234; // SyntaxError
foo['1234']; // works
两种语法是等价的,但是中括号操作符在下面两种情况下依然有效:
-动态设置属性
-属性名不是一个有效的变量名(比如属性名中包含空格,或者属性名是JS的关键词)
删除属性
删除属性的唯一方法是使用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被真正的删除了,所以从结果中消失。
属性名的语法
var test = {
'case': 'I am a keyword so I must be notated as a string',
delete: 'I am a keyword too so me' // 出错:SyntaxError
};
对象的属性名可以使用字符串或者普通字符声明,但是由于 JavaScript解析器的设计,上面的第二种声明方式在ECMAScript 5之前会抛出SyntaxError的错误。
这个错误的原因是delete是JavaScript语言的一个关键词,因此为了在更低版本的JavaScript引擎下也能正常运行,必须使用字符串字面值声明方式。
浙公网安备 33010602011771号