JS 核心知识整理-对象

2016-06-13  本文已影响218人  郝翔

对象

JavaScript 中,一般使用字面量的方法新建对象,表现形式为多个名值对。

对象属性的不同

有一个需要留意的地方,对象的属性名与变量名是不同的,属性名字可以是包括空字符串在内的任何字符串,举个例子:

var obj = {
first_name = 1,
"first-name" = 2
};

回顾一下,在 js 中,标识符就是 _$a-Z开头后,选择性加上 0-9 的字符组合,标识符中是没有 -的,但是在对象的属性中,可以使用中划线 -,但是需要为属性名加引号。
不过这样带来的问题也比较蛋疼,在 JS 中,只有两种方法可以读取属性,我们来看看:

var a = { a-b: 1}
// Uncaught SyntaxError: Unexpected token -
var a = { "a-b": 1};
a.a-b 
// Uncaught ReferenceError: b is not defined(…)
a."a-b"
// Uncaught SyntaxError: Unexpected string
a["a-b"]
// 1

只能说略有蛋疼...还是不要考虑这样的用法了,做个安静的美男子。
总结起来,如果是属性值是标准的字符串字面量(反例是这种蛋疼的情况 a.012 ),同时是一个合法的标识符,那么可以使用 . 表示法检索,其他情况必须使用["key"]的方法检索。
对象除了简单的检索外,还可以结合双目运算符,进行一些简单的操作,比如说赋默认值,规避 TypeError 等等。如下:

var a = store["data"] || "pen";
var a = filght.eq && flight.eq.model;

增删查改

对象属性的检测

使用 typeof 操作符,可以判断值的类型。如果需要单单检测属性,可以通过这个操作符来抛弃为 function的方法值。
hasOwnProperty(keyName) 方法查看某个属性是否是对象独有的。
for in方法同样可以用来判断属性的存在情况,它会枚举出包括在原型链上的所有属性,所以你懂的, 结合这几种方法才可以创造完美盛世。

上一篇下一篇

猜你喜欢

热点阅读