一、创建对象

  1、对象直接量。

    var point = { x:0,y:0 };  //point就是一个对象,跟C#不同,它不需要一定有类才能创建对象。

  2、通过new创建对象

    var d = new Date();    //创建一个Date对象

  3、原型

    Object.prototype  //用于获取对象原型的引用。所有对象都直接或间接继承自Object.prototype,相当于C#中的System.Object();

    通过new Date()创建的对象同时继承自Date.prototype和Object.prototype。

  4、Object.create()

    Object.create()是一个静态函数,可以用它创建一个新对象。

二、属性的读取和设置

  1、属性的读取有两种方法。可以通过"."和"[]"来读取。

    如:var author = book.author;

      var author = book["authoe"];

    设置也一样:

      book.author = "刘德华";

      book["author"] = "刘德华";

    注意,如果对象的属性名与保留字一样,则必须通过方括号读取。

      如:book["class"];

     另外用方括号访问就个好处,就是在运行时确定属性名如book["author" + 1];

  2、继承

    如果要查询对象o的属性x,如果o没有属性x,则会到o的原型去查,一级一级往上,直到Object.prototype。

    var o = {};
o.x = 1;
var p = Object.create(o);
p.x = 2;         //改变了继承的属性x
document.write(p.x);  //输出2,p.x继承自o.x
var q = Object.create(o);
document.write(q.x);  //输出1,p改变的是自己x,改变不了原型的x

    同时对原型链属性的操作并不会真正更改原型链,只是在子对象中增加了一个同名属性。更改是只是改了自己。

三、删除属性

    delete()   delete()方法只能够删除自有属性,不能够删除继承属性。delete()只是断开属性和宿主对象的联系,而不回去操作属性中的属性。

        var book = {
author:"刘德华",
number:123
}
delete book.author;        //此行代码也可写成delete book["author"]
document.write(book.author);  //book.author的值为undefined,因为已经被删除了

四、检测属性

    in:检测某对象是否含有某个属性

        var o = {
x:1
}  
document.write("x" in o);  //返回true  x是o的一个属性
document.write("y" in o);  //返回false  y不是o的属性

    hasOwnProperty() 检测对象中是否含有某属性

        var o = {
x : 1
}
document.write(o.hasOwnProperty("x"));  //返回true  o中含有名为"x"的属性
document.write(o.hasOwnProperty("y"));  //返回false  o中不含有名为"y"的属性

    propertyIsEnumerable()  检测到是自有属性且这个属性的可枚举性,两者都返回true它才返回true。继承属性返回false。

        var o = { x: 1,y:2,z:3 };
for (p in o) {
if (!o.hasOwnProperty(p)) {  //跳过继承的属性
continue;
}
if (typeof o[p] === "function") {  //跳过方法
continue;
}
document.write( p.toString() + "<br/>");
}

    get() set()属性访问器  没有相应的get(),set()则为只读,或只写属性。

        var o = {
x: 1,
get getx(){ return this.x; },
set setx(n){this.x = n;}
};
document.write(o.getx);  //读取属性值,返回1
o.setx = 2;         //如果将set setx(n)这行注释,则这行代码可以相当于不存在,设置无效。x依然为1,但不会报错。
document.write(o.getx);  //再次读取返回2

五、属性的特性

    writeable:是否可写。

    enumerable:是否可枚举。

    configurable:是否可配置。

六、对象的序列化

  这个东西非常有用,能够将对象序列化成字符串之后传输,也能够将对象以字符串的格式存在cookie里,拿出来后再反序列化成对象。

    JSON.stringify()   序列化对象(对象转成字符串便于传输)

    JSON.parse()    反序列化对象(字符串转换成原对象,是源对象深拷贝)

            var man = { name: "张三", Age: 24 };
var str = JSON.stringify(man);    //将对象man序列化成JSON字符串
document.write(str);
var newman = JSON.parse(str);     //将字符串反序列成对象
document.write("<br/>" + newman.name + "," + newman.Age);  //输出反序列化后的对象的属性

javascript之对象的更多相关文章

  1. javascript 全局对象--w3school

    JavaScript全局对象 1.  decodeURI()解析某个编码的URI. 2.decodeURInComponent()解析一个编码的URI组件. 3.encodeURI()把字符串编码为U ...

  2. JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString

    JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString 如下示例: 直接写的a1就是一个Json对象,a2 就是一个Json对象字符串; 通 ...

  3. 从零构建JavaScript的对象系统

    一.正统的类与继承 类是对象的定义,而对象是类的实例(Instance).类不可直接使用,要想使用就必须在内存上生成该类的副本,这个副本就是对象. 以Java为例: public class Grou ...

  4. 关于javascript自定义对象(来自网络)(最近几天不会的)

    javascript定义对象的几种简单方法 1.构造函数方式,全部属性及对象的方法都放在构造方法里面定义 优点:动态的传递参数 缺点:每创建一个对象就会创建相同的方法函数对象,占用大量内存 funct ...

  5. 据说每个大牛、小牛都应该有自己的库——JavaScript原生对象拓展

    在据说每个大牛.小牛都应该有自己的库——框架篇中我扬言要做个小牛,没想到一天没更新,小伙儿伴们就戏谑的问我,油哥是不是要太监了?其实事情是这个样子的,这不是太监的节奏,一是,关于写个自己的库的想法由来 ...

  6. JavaScript RegExp 对象

    JavaScript RegExp 对象 RegExp 对象用于规定在文本中检索的内容. 什么是 RegExp? RegExp 是正则表达式的缩写. 当您检索某个文本时,可以使用一种模式来描述要检索的 ...

  7. JavaScript String 对象

    JavaScript String 对象 String 对象 String 对象用于处理文本(字符串). String 对象创建方法: new String(). 语法 var txt = new S ...

  8. JavaScript Math 对象

    JavaScript Math 对象 Math 对象 Math 对象用于执行数学任务. Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(). 语法 var ...

  9. JavaScript Number 对象

    JavaScript Number 对象 Number 对象 Number 对象是原始数值的包装对象. Number 创建方式 new Number(). 语法 var num = new Numbe ...

  10. JavaScript Array 对象

    JavaScript Array 对象 Array 对象 Array 对象用于在变量中存储多个值: var cars = ["Saab", "Volvo", & ...

随机推荐

  1. UltraChart画柱状图上面显示数值

    http://www.cnblogs.com/kevin-h-wang/archive/2013/06/05/UltraChart.html 1.柱状图上显示数值 ? //第一种方法 this.Ult ...

  2. 杭州网赛 two rabbits (hdu 4745)

    算法很简单,问题是,怎么证明,答案是回文序列. 设a,b走的序列按顺时针是: a1 , a2 , a3 , ... , ak b1 , b2 , b3 , ... , bk 考虑端点的2种情况: 1. ...

  3. 《Two Days DIV + CSS》读书笔记——CSS选择器

    1.1.2 CSS选择器 CSS 选择器最基本的有四种:标签选择器.ID 选择器.类选择器.通用选择器. [标签选择器] 一个完整的 HTML 页面由很多不同的标签组成,而标签选择器,则是决定哪些标签 ...

  4. OpenStack Mixture HypervisorsDriver configure and implementation theory

    通过本文,您将可以了解在 OpenStack 中如何进行混合 Hypervisor 的配置及其实现原理的基本分析.本文主要结合作者在 Nova 中的实际开发经验对 OpenStack 中混合 Hype ...

  5. Hive 3、Hive 的安装配置(本地derby模式)

    这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可; $ vim hive-site.xml <configuration>   <property> ...

  6. DirectX 初始化DirectX(第一方式)

      上一章我们学会了如何C++Win32项目中搭建DirectX开发环境, 那么下面来写代码初始化DirectX吧O(∩_∩)O~. 首先你创建一个Win32程序,点击运行你可以看见一个window窗 ...

  7. Java遍历Map对象的四种方法

    在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...

  8. 关于java读取和写入properties配置文件的内容

    一般通过使用流的方式进行读取 代码示例如下: package com.zznode.transmit.util; import java.io.FileInputStream; import java ...

  9. linux逻辑卷管理

    近期在进行linux充电,依据网络资料自己整理的资料,分享一下 ---------------------------------------------------------- Linux逻辑卷管 ...

  10. 《JavaScript 闯关记》之 BOM

    ECMAScript 是 JavaScript 的核心,但如果要在 Web 中使用 JavaScript,那么 BOM(浏览器对象模型)则无疑才是真正的核心.BOM 提供了很多对象,用于访问浏览器的功 ...