Javascript 对象

前言

Javasript是一个比较危险的语言,纯属个人感觉,可能是比较简单,所以并不会那么去注意这一门语言的特性,我记得有专家说过,如果学习一门语言,回首先从它的特性开始学习。

对象

对象是属性的容器,其中每个属性都拥有名字和值,属性的名字可以是包括空字符串在内的任意字符串;属性值可以是除undefined值之外的任何值。

检索

  1. 要检索对象里包含的值,可以采用在[]后缀中括住一个字符串表达式的方式,但是,优先考虑使用"."表示法,因为它更紧凑而且可读性更好。

  2. 如果尝试检索一个并不存在的成员属性的值,将返回undefined。尝试从undefined的成员属性中取值将会导致TypeError异常。这时可以通过 && 运算符来避免错误。

a.b //undefinded
a.b.c //throw "TypeError"

a.b && a.b.c //undefined

更新

对象里的值可以通过赋值语句来更新,如果属性名已经存在于对象里,那么这个属性的值将会被替换。

如果对象之前没有那个属性名,那么该属性就会被扩充到对象中。

引用

对象通过引用来传递,它们永远不会被复制。

var b = a;
a.name = 'b';  //这时a和b对象的name属性值都更新为b

var a = {}, b = {}, c = {}; //a,b,c每个都引用一个不同的空对象
a = b = c = {};

原型

只有在检索的时候,会检查原型链;如果找不到,会一直从原型中找,直到找到,如果找不到返回undefined,这个过程叫做委托。

反射

可以通过typeof 和 hasOwnProperty方法查询对象什么属性。

枚举

如果使用for in函数,属性名出现的顺序是不确定的,因此要对任何可能出现的顺序有所准备。如果想要特定的顺序,最好的办法是避免使用for in,而是创建一个数组,里面包含属性名,再使用for循环访问。

减少全局变量污染

只有把全局性的资源都纳入一个名称下,你的程序和其他应用程序之间发生的冲突的可能性就会显著降低。

var a = {}; //顶层结构
a.b = {};

原文地址:https://www.cnblogs.com/George1994/p/6396086.html