- 检索:
var obj = {
name: 'Jack'
}
访问变量中属性和方法
(1) obj.name
(2) obj['name'] ==> 如果 name 为JS中的关键字或保留字,可以用这种方法访问以保证不出错
不过我们建议永远禁止使用JS关键字或保留字命名变量
|| 运算符可以用来填充变量
obj.name = undefined;
var name = obj['name'] || 'wang'
name ==> 'wang'
obj.name ==> undefined
obj.name.age ==> throw "TypeError"
obj.name && obj.name.age ==> undefined //避免报错
- 原型
所有通过对象字面量创建的对象都连接到Object.prototype,它是JS的标配对象
原型关系是一种动态的关系。如果我们添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见
因为对象会先在自身查找是否有该方法,没有的话,再去原型链查找。
var obj = {}
Object.prototype.name = "jack"
obj.name = 'jack';
枚举
使用for in枚举对象属性,属性名出现的顺序是不确定的,如果想确保属性名以特定的顺序出现,最好的办法就是完全避免使用for in语句,而是创建一个数组来遍历;删除
delete 运算符可以用来删除对象的属性
var obj = {
name: 'jack '
}
delete obj.name
obj.name ==> undefined
删除对象的属性可能会让来自原型链中的属性透现出来
var obj = {
name : 'jack'
}
Object.prototype.name = 'pony';
delete obj.name;
obj.name ==> 'pony'
- 减少全局变量污染
全局变量削弱了程序的灵活性,应该避免使用
最小化使用全局变量的方法之一就是为你的应用只创建一个唯一的全局变量;
var module = {
name: 'jack',
init: function(){
this.bindEvents();
},
bindEvents: function(){
getName: function(){
return name
}
}
}
永远确保你的文件中只有module一个全局变量