javascript之对象

一、创建对象

  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);  //输出反序列化后的对象的属性
时间: 2024-10-05 20:02:09

javascript之对象的相关文章

JavaScript - Array对象的使用 及 数组排序 sort

<html> <head> <head> <body> <script language="javascript"> // Array对象 // 第一种构造方法 var arr = new Array(); alert(arr.length); arr[0] = 520 ; arr[1] = "wjp" ; alert(arr.length); // 第二种构造方法 // Array(4) ; // 第三种

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

JavaScript的对象——灵活与危险

没有哪种数据结构比JavaScript的对象更简单灵活了.作为一个弱动态类型语言,JavaScript对对象的属性没有任何约束, 这带来的结果就是,在使用的时候很爽,想加啥属性直接加上去就行了,根本没有类或模板的限制, 想读啥属性直接"点"出来就行了,写出来那是相当简洁:然而这样的代码在运行的时候呢-- JavaScript这种灵活性最大的一个问题也是没有约束.比如一个网店系统有两个部分,一部分产生订单对象, 另一部分拿到订单对象来展示.咱们前端程序员自然是干后面展示那部分事儿的,比如

奔跑吧,我的JavaScript(3)---JavaScript浏览器对象

Window对象 1.是BOM的核心,window对象指向当前的浏览器窗口,最高层对象之一. 2.所有JavaScript全局对象,函数以及变量均自动成为window对象成员 3.全局变量是window对象的属性 4.全局函数是window对象的方法 5.window尺寸 window.innerHright/window.innerWidth,浏览器窗口的内部高度/宽度 6.window方法 window.open()       打开新窗口 window.close()      关闭窗口

JQuery $.each遍历JavaScript数组对象实例

查看一个简单的jQuery的例子来遍历一个JavaScript数组对象. var json = [ {"id":"1","tagName":"apple"}, {"id":"2","tagName":"orange"}, {"id":"3","tagName":"banana&q

【温故而知新-Javascript】对象

1 创建对象 Javascript 支持对象的概率.有多种方法可以用来创建对象. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Javascript Object </title> </head> <body> <script> var myData = new Ob

JavaScript实现对象的深度克隆【简洁】【分享】

JavaScript实现对象的深度克隆 代码实现如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>clone</title> 6 7 <script type="text/javascript"> 8 //对象深度克隆方法 9 10 11 ////

javascript获取对象直接量中的属性和属性值

javascript获取对象直接量中的属性和属性值:所谓的对象直接量简单来说就是,由大括号包裹的键值对列表,例如: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } 下面介绍一下如何获取对象直接量中的属性和属性值,代码如下: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } for(var prop in a

JavaScript Number 对象

JavaScript Number 对象 JavaScript 只有一种数字类型. 可以使用也可以不使用小数点来书写数字. JavaScript 数字 JavaScript 数字可以使用也可以不使用小数点来书写: 实例 var pi=3.14;    // 使用小数点var x=34;       // 不使用小数点 极大或极小的数字可通过科学(指数)计数法来写: 实例 var y=123e5;    // 12300000var z=123e-5;   // 0.00123 所有 JavaSc

javascript声明对象

javascript的对象声明有三种方法; 1,使用new关键字直接创建对象 1, var p1 = new Person() 2,使用Object直接创建对象 var myOb = new Object(); myOb.name = 'ttf'; myOb.age = '21'; 3,使用json语法创建对象. var p = {     name: 'ttf',     age:21 };