第三章:对象:

属性名字:可以是包括空字符串在内的任意字符串;

属性值:是除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章对象的更多相关文章

  1. JavaScript语言精粹 笔记01 语法 对象

    内容比较简单,只是从头梳理一下JS的知识 语法空白标识符数字字符串语句 对象对象字面量检索更新引用原型反射枚举删除减少全局变量污染  语法 1 空白 空白可能表现为格式化字符或注释的形式.空白通常没有 ...

  2. 《JavaScript语言精粹》第二章-语法 简单笔记

    注释 JavaScript提供两种注释: /* */包围的块注释及//开头的行注释. 注释应该被优先用来提高程序的可读性,注释要精确地描述代码,没有用的注释比没有注释更糟糕. /* */块注释对于被注 ...

  3. 你想了解的《javaScript语言精粹》(三)

    # javaScript语言精粹  # 第三章 对象 - javaScript 数据类型     1. 基础数据类型         Number String Boolean Undefined N ...

  4. JavaScript中对象与函数的某些事[JavaScript语言精粹-N1]

    今天在读<JavaScript语言精粹>的时候,关于函数的一个部分,始终觉得有点难以理解,代码如下: 1: var obj = (function(){ 2: var value = 0; ...

  5. 《JavaScript语言精粹》之函数化

    写在前面 看到好多书评和读书笔记都说<JavaScript语言精粹>字字珠玑,名不虚传..当然,要看得懂才行 其实个人认为函数化部分不是很好,举的例子不是十分恰当,之前看不懂是因为被成功误 ...

  6. 《JavaScript语言精粹》【PDF】下载

    <JavaScript语言精粹>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382204 内容简介 javascript曾是&q ...

  7. JavaScript 语言精粹笔记3

    方法 毒瘤 糟粕 记录一下阅读蝴蝶书的笔记,本篇为书中最后一部分:方法.代码风格.优美的特性.毒瘤.糟粕等. 方法 这一章主要介绍了一些方法集.这里写几个我不太熟悉的方法和要点吧. array.joi ...

  8. 《JavaScript语言精粹》小记

    一.前言 以下内容均摘自<JavaScript语言精粹>一书,本人在读这本书时,发现作者诠释JavaScript很犀利,特别是数组部分,固记录下来,想和大家分享下. 随笔主要包含两大部分: ...

  9. javascript语言精粹

    内容选自:<javascript语言精粹> 1.6种值会为假(==false),分别是false,null,undefined,' ',0,NaN 2.typeof有6种值,分别是'num ...

  10. Javascript 语言精粹 代码片段合集

    Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...

随机推荐

  1. Swift中的闭包(Closure) 浅析

    转载自:http://www.devtalking.com/articles/closure-expressions-in-swift/ 闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储 ...

  2. 初探JavaScript魅力(二)

    行为,样式,结构三者分离(javascript, css, html),不要在行间加行为,样式 样式优先级:*<标签<class<ID<行间 style与className,如 ...

  3. javascript语句语义大全(7)

    1. 事件 onmousedown——鼠标按下事件 当鼠标按下的时候触发,根据鼠标不同的按键会有不同的值传入,左键0,滚轮1,右键2,不同浏览器可能有不同. onmousemove——当鼠标移动的时候 ...

  4. SAX,DOM,JAXP,JDOM,DOM4J比较

    dom,sax,jdom,dom4j的技术特点: 1: DOMDOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结构组织的节点或信息片断的集合.这个层次结构允许 ...

  5. [IDL入门] 两个PPT,IDL上手

    首先看看IDL能干什么,<Solving Real Problems with Computer Graphics>ppt是英文的,很精彩. 下载地址:http://pan.baidu.c ...

  6. kvm的live-snapshot

    目前项目中已经存在的快照是针对卷的快照,并且需要关机.所以目前的需求有两个:1.不关机快照:2.针对虚拟机的快照,而不是针对券的快照. 由需求所以针对libvirt做了一些实验,纪录如下: 环境:物理 ...

  7. SVM阅读资料

    1,Andrew Ng机器学习公开课笔记 -- 支持向量机 2,http://blog.pluskid.org/?page_id=683 3,支持向量机SVM(一) 4,机器学习中的算法(2)-支持向 ...

  8. jquery的extend和fn.extend

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(object); jQuery.extend(object); jQuery.extend(object); 为扩展j ...

  9. FIFO 和 LRU 调度算法

    在一个采用页式虚拟存储管理的系统中(字地址序列.页号.块号均从零开始编址),有一用户作业,它依次要访问的字地址序列是:15,128,300,388,246,402,223,142,360,267,若该 ...

  10. FZU Problem 2028 时空门问题(DFS+优化)

    一开始是MLE,后来想到了用vector,化二维为一维,做了这一步优化后,这就是很基础的一个广搜了 #include<iostream> #include<cstdio> #i ...