对象(Objects)  对象属性值可以是除undefined值之外的任意值

1.对象字面量

 a.{}  b.new object();

注意事项: 在对象字面量中,如果属性名是一个合法的javascript标识符且不是保留字,则并不强制要求用引号扩住属性名。

JavaScript标识符中包含连接符(-)是不合法的,但允许包含下划线(_);

例: var stooge = {
"first-name" : 'z',
"last-name" : 'wd'
} var flight = {
airline: "Oceanic",
num : 815
}

2.检索

要检索对象里面包含的值,可以采用在[]后缀中括住一个字符串表达式的方式。如果字符串表达式是一个字符串字面量,而且他是一个合法的javascript标识符且不是保留字,那么也可以用 . 表示法代替。优先考虑使用 .  因为它更紧凑且可读性好。

如果检索到一个并不存在的成员属性的值,将返回undefned;

例:
stooge["middle-name"] //undefined
flight.status //undefined

||(或) 运算符可以用来填充默认值

例: 
var middle = stooge["middle-name"] || "(none)"
var status = flight.status || "unknown"

尝试从undefined的成员属性中取值将会导致TypeError异常,这是可以通过 && 运算符来避免错误。

例:
flight.equipment //undefined
flight.equipment.model //undefined
flight.equipment && flight.equipment.model //undefined

3.更新

如果属性名已经存在对象里,那么这个属性的值就会被替换。

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

4.引用

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

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

5.原型

每个对象都连接到一个原型对象,并且它可以从中继承属性。所以通过对象字面量创建的对象都连接到object.prototype,它是javascript中的标配对象。

当你创建一个新对象时,你可以选择某个对象作为它的原型。

原型连接只有在检测值的时候才被用到。如果我们尝试去获取对象的某个属性值,但该对象没有属性名,那么javascript会试着从原型对象中获取属性值。(如果在那个原型对象没有找到属性,那么再从它的原型中寻找,以此类推,直到最终到达终点Object.prototype。如果想要的属性完全不存在原型链中,那么结果就是undefined值,这个过程叫做委托。)

原型关系是一种动态关系。如果我们添加一个新的属性到原型中,该属性会立即对所有给予该原型创建的对象可以见。

6.反射

typeof操作符对确定属性的类型有很大帮助。

例:
typeof flight.number //'number'
typeof flight.status //'string'

注意:原型链中的任何属性都会产生值

例:
typeof flight.tosting //'function'
typeof flight.constructor //'function'

处理掉不需要的属性

hasOwnProperty()  如果对象拥有独有的属性,他将返回true。它不会检测原型链。

例:
flight.hasOwnProperty('number') //true
flight.hasOwnProperty('constructor') //false

7.枚举

for in 语句可用来遍历一个对象中的所有属性名。该枚举过程中将会列出所有的属性——包括函数和你可能不关心的原型中的属性——所以有必要过滤掉那些你不想要的值。最为常用的过滤器是hasOwnProoperty方法,以及使用typeof来排除函数。

例:
var name;
for(name in flight) {
if(typeof flight[name] !== 'function') {
//可以获取到不是方法的属性值。
}
}

for in 枚举出来的属性名出现的顺序是不确定的,如果确保要以特定的顺序出现,避免使用 for in 语句,而是创建一个数组。

8.删除

delete运算符可以用来删除对象的属性。如果对象包含属性,那么该属性就会被移除。它不会触及原型链的任何对象。

9.减少全局变量污染

最小化使用全局变量的方法之一是为你的应用只创建一个唯一的全局变量;

例:
var MYAPP = {}; MYAPP.stooge = {
"first-name": "Joy",
"last-name": "Howard"
} MYAPP.flight = {
airline: "Oceanic",
number: 815
}

只要把全局性的资源都纳入一个名称空间之下,你的程序与其他应用程序、组件或类库之间发生冲突的可能性就会降低。(闭包可以进行信息隐藏的方式,闭包是另一种有效减少全局污染的方法)

学习javscript对象笔记(一)的更多相关文章

  1. 学习javscript函数笔记(二)

    定义: 函数包含一组语句,他们是JavaScript的基础模块单元,用于代码复用.信息隐藏和组合调用.函数用于指定对象的行为. 1.函数对象 JavaScript中的函数就是对象,函数对象连接到Fun ...

  2. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  3. hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览

    对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看star ...

  4. JavaScript学习04 对象

    JavaScript学习04 对象 默认对象 日期对象Date, 格式:日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用): 2.英文-数值格式:月 日,公元年 [时:分: ...

  5. hadoop2.5.2学习及实践笔记(二)—— 编译源代码及导入源码至eclipse

    生产环境中hadoop一般会选择64位版本,官方下载的hadoop安装包中的native库是32位的,因此运行64位版本时,需要自己编译64位的native库,并替换掉自带native库. 源码包下的 ...

  6. Javascript学习4 - 对象和数组

    原文:Javascript学习4 - 对象和数组 在Javascript中,对象和数组是两种基本的数据类型,而且它们也是最重要的两种数据类型. 对象是已命名的值的一个集合,而数组是一种特殊对象,它就像 ...

  7. 开始记录学习java的笔记

    今天开始记录学习java的笔记,加油

  8. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  9. Spring.NET依赖注入框架学习-- 泛型对象的创建和使用

    Spring.NET依赖注入框架学习-- 泛型对象的创建和使用 泛型对象的创建方法和普通对象是一样的. 通过构造器创建泛型对象 下面是一个泛型类的代码: namespace GenericsPlay ...

随机推荐

  1. [database] postgresql 外网访问

    配置 环境 ubuntu 14.04 LTS 版本 postgresql version 9.3 修改监听地址 编辑 /etc/postgresql/9.3/main/postgresql.conf ...

  2. 6w6:第六周程序填空题3

    描述 下面的程序输出结果是: A::Fun A::Do A::Fun C::Do 请填空: #include <iostream> using namespace std; class A ...

  3. 从程序员的角度深入理解MySQL

      前言 今天我将站在程序员的角度以MySQL为例探索数据库的奥秘! 数据库基本原理 我对DB的理解 1.数据库的组成:存储 + 实例 不必多说,数据当然需要存储:存储了还不够,显然需要提供程序对存储 ...

  4. EF进阶篇(二)——CRUD

    前言 不写前言了... 内容 我们都知道我们修改的实体状态添加到上下文里面,然后上下文根据实体状态生成相应的SQL执行脚本,去隐式执行到数据库中.(屏幕前的你暂且这样理解吧,因为小编语文没有学好,太通 ...

  5. PHP编码技巧

    原则 正确实现功能 执行速度与快 占系统资源少 后期维护方便 编程注意 1.命名很重要 2.适当的使用注释 3.使用一个变量,需要初始化 4.优先使用单引号 $row['id']的效率是$row[id ...

  6. 搭建 docker + nginx + keepalived 实现Web应用的高可用(亲测)

    1. 环境准备     下载 VMware : https://www.vmware.com/go/getplayer-win        下载 Centos : https://mirrors.a ...

  7. CSS复合选择器

    复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,目的是为了可以选择更准确更精细的目标元素标签. 交集选择器 交集选择器由两个选择器构成,其中第一个为标签选择器,第二个为class选择器, ...

  8. postgresql数据库异步流复制hot standby环境搭建

    生命不息,test不止. 最近组里面修改了几个postgresql的bug,要进行回归测试,除了前面提到的WAL的RT测试和Mirroring Controller的RT测试,还要测试下postgre ...

  9. django form tips

    1.form将获取的参数传递到field 2.field中的函数 to_python 数据库到python中变量 get_prep_value python变量到数据库 validate 验证,也可以 ...

  10. 在FC中如何获取fcdot文件

    在FlexiCapture中一些客户在问如何获取.fcdot文件(在测试序列号下或者没有测试模板的情况下) 第一步: 1.查看License Manager查看是否找到序列号 首先我们在开始菜单里面打 ...