《javascript语言精粹》——第3章对象
第三章:对象:
属性名字:可以是包括空字符串在内的任意字符串;
属性值:是除undefined值之外的任何值;
【1】、对象字面量:
var obj={}; //空对象
var obj = new Object();//空对象
var newobj={
name:"小明",
age:17,
school:{
class:"一班"
}
};
属性名可加引号,也可不加
【2】、检索
newobj["name"] //小明
newobj.age //17 推荐使用.可读性更加好,紧凑
newobj["name1"] //若检索不存在的属性,则返回undefined值
||运算符可以用来填充默认值
var test=newobj["name"]||"none";
&&运算符来避免错误
var test1=newobj["newname"]; //undefined
var test2=newobj["newname"].model; //throw "type.error"
var test3=newobj.newname&&newobj.newname.model; //undefined
【3】、更新
newobj["newname"]="小花";
newobj.nickname="小三";
newobj.family={
mother:"老妈",
father:"老爸"
};
若该属性名存在于该对象中,那么就是直接复制替换,若该属性值不存在于该对象中,那么直接扩充到该对象中,成为该对象的属性!
【4】、引用
var x=newobj;
x.nickname="小四";
var nick=newobj.nickname; //小四
var a={},b={},c={};
//引用不同的空对象
a=b=c={};
//引用同一个空对象
【5】、原型
if(typeof Object.beget!=="function")
{
Object.beget=function(o){
var f=function(){};
f.prototype=o;
return new f();
};
}
var anotherObj=Object.beget(newobj);
newobj.brother="小弟"; //对作为原型对象的对象,若更新属性或者扩充属性,都会使基于该原型创建的对象可见,
但是,对于原型链接更新是,也就是基于原型创建的对象在改变时,不会触及到原型.原型连接只有在检索值的时候才会被用到。
检索顺序是:原型对象----》原型---》Object.prototype,若想要的属性不存在原型链中,就会返回undefined,该过程称之为委托。
alert(anotherObj.brother); //小弟
【6】、反射
typeof操作符确定属性的类型
newobj.hasOwnProperty("brother") ;//true,因为brother是newobj对象中独有的属性
newobj.hasOwnProperty("constructor");//false,因为constructor不是newobj对象中的独有的属性,别的对象也都有constructor
【7】、枚举
var name;
for(name in anotherObj){ //声明的name变量,用来临时装对象中的所有属性
if(typeof anotherObj[name]!=="function"){
document.writeln(name+":"+anotherObj[name]); //运行出来的顺序是不确定的
}
}
var i;
var prop=[
"name",
"nickname",
"age",
"brother"
];
for(i=0;i<prop.length;i++)
{
document.writeln(prop[i]+":"+anotherObj[prop[i]]);//name:小明 nickname:小三 age:17 brother:小弟
}
【8】、删除
delete anotherObj.name;
alert(anotherObj.name); //小明,不会删除原型链中的任何对象
delete newobj.name;
alert(newobj.name);//undefined
delete newobj.name;
alert(anotherObj.name);//undefined
《javascript语言精粹》——第3章对象的更多相关文章
- JavaScript语言精粹 笔记01 语法 对象
内容比较简单,只是从头梳理一下JS的知识 语法空白标识符数字字符串语句 对象对象字面量检索更新引用原型反射枚举删除减少全局变量污染 语法 1 空白 空白可能表现为格式化字符或注释的形式.空白通常没有 ...
- 《JavaScript语言精粹》第二章-语法 简单笔记
注释 JavaScript提供两种注释: /* */包围的块注释及//开头的行注释. 注释应该被优先用来提高程序的可读性,注释要精确地描述代码,没有用的注释比没有注释更糟糕. /* */块注释对于被注 ...
- 你想了解的《javaScript语言精粹》(三)
# javaScript语言精粹 # 第三章 对象 - javaScript 数据类型 1. 基础数据类型 Number String Boolean Undefined N ...
- JavaScript中对象与函数的某些事[JavaScript语言精粹-N1]
今天在读<JavaScript语言精粹>的时候,关于函数的一个部分,始终觉得有点难以理解,代码如下: 1: var obj = (function(){ 2: var value = 0; ...
- 《JavaScript语言精粹》之函数化
写在前面 看到好多书评和读书笔记都说<JavaScript语言精粹>字字珠玑,名不虚传..当然,要看得懂才行 其实个人认为函数化部分不是很好,举的例子不是十分恰当,之前看不懂是因为被成功误 ...
- 《JavaScript语言精粹》【PDF】下载
<JavaScript语言精粹>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382204 内容简介 javascript曾是&q ...
- JavaScript 语言精粹笔记3
方法 毒瘤 糟粕 记录一下阅读蝴蝶书的笔记,本篇为书中最后一部分:方法.代码风格.优美的特性.毒瘤.糟粕等. 方法 这一章主要介绍了一些方法集.这里写几个我不太熟悉的方法和要点吧. array.joi ...
- 《JavaScript语言精粹》小记
一.前言 以下内容均摘自<JavaScript语言精粹>一书,本人在读这本书时,发现作者诠释JavaScript很犀利,特别是数组部分,固记录下来,想和大家分享下. 随笔主要包含两大部分: ...
- javascript语言精粹
内容选自:<javascript语言精粹> 1.6种值会为假(==false),分别是false,null,undefined,' ',0,NaN 2.typeof有6种值,分别是'num ...
- Javascript 语言精粹 代码片段合集
Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...
随机推荐
- Java中的五种单例模式实现方法
[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 ...
- FRP 浅析
一.Reactive? 请先看一个非常简单的小应用,它允许用户在一个搜索输入框里输入关键词,然后在其下方的结果区域实时显示从Flicker网站搜索得到的图片,当用户输入的关键词发生变化,显示的图片也会 ...
- Java成员变量默认值
Java中明确规定:1.如果是引用型的,比如:String,还有类对象,他们的默认值都是:null:2.而如果是值类型:double,int,long,float,char等等,他们都是:0:还有一个 ...
- getByClassName2016/4/21
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- heartbeat集群安装配置
安装配置高可用集群需要注意:1.节点名称:集群每个节点的名称都得能互相解析 /etc/hosts hosts主机名的正反解析结果必须跟"uname -n"的结果保持一致2.时间必须 ...
- 【转】使用gulp 进行ES6开发
原谅地址:https://segmentfault.com/a/1190000004394726 一说起ES6,总会顺带看到webpack.babel.browserify还有一些认都不认识的blab ...
- VirtualBox 复制vdi文件和修改vdi的uuid
1.复制vdi文件:VBoxManage clonehd 因为VirtualBox不允许注册重复的uuid,而每个vdi文件都有一个唯一的uuid.所以要想拷贝一份vdi文件再次在VBOX中注册,简单 ...
- Net 自定义Excel模板导出数据
转载自:http://www.cnblogs.com/jbps/p/3549671.html?utm_source=tuicool&utm_medium=referral 1 using Sy ...
- 总结NAND FLASH控制器的操作
初始化 NAND FLASH: 1)寄存器 NFCONT,用于开启 NAND FLASH控制器: 2)向寄存器NFCMD写入命令: 3)向寄存器NFADDR写入地址: 4)使用寄存器NFDATA进行数 ...
- 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区 作者:njchenyi [字体:大 中 小] 我是先安装了Ubuntu 12.04 Server,然后 ...