对象
JS中的简单对象:数字
,字符串
,布尔值
,null值
和undefined值
。
对象和Json
var flight = {
airline:"Oceanic",
"number":815,
first_name: "Lisa", //此处first_name符合字符串规范,可以不用" "
"last-name":"Smith"//此处 - 不属于JS字符串规范,所以必须使用引号
}
以上是一个JS对象。我想那它与Json对象做一个比较:
{
"airline":"Oceanic",
"number":"815",
"first_name": "Lisa",
"last-name":"Smith"
}
Json对象需要
键-值
均要用" "
括起来。而对于对象,如果键符合JS字符串标准,则可以不使用" "
括起来;但是对于不符合规范的键来说,则必须使用" "
来括住。
访问
由于对于JS合法标识符的区别,也造成了JS对象的不同访问。以上面的flight
对象为例,如果要访问first_name
属性,则:
flight["first_name"]
flight.first_name
均是正确的。而对于last-name的访问,由于-
不是JS合法标识符,所以只能被[ ]
访问。
flight["last-name"]
原型
要与new关键字配合使用,原型链向上继承。原型关系是一种动态的关系。如果我们添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见。
父变字可见,子无向父寻。
反射
typeof
检测属性,’number’,’string’,’object’,’undefined’,’function’等属性。
hasOwnProperty方法,如果对象拥有独有的属性,它将返回true。hasOwnProperty方法不会检查原型链。
删除
delete
运算符可以用来删除对象的属性,如果对象包含该属性,则会被删除,但是它不会触及原型链中的任何对象。同时它也不能删除function
,删除对象的属性可能会让原型链中的属性透视出来。
减少全局变量的污染
使用唯一的全局变量对象,或者使用闭包操作。