zoukankan      html  css  js  c++  java
  • JavaScript之对象

    1.创建对象

    如下都是合法的对象

    var empty={};
    var point={x:5,y:6};
    var point2={x:point.x, y:point.y+1};
    var book={
        "main title":"JavaScript",
        "sub-title":"The Definitive Guide",
        "for":"all audiences",
        "author":{
            "firstname":"David",
            "surname":"Flangan",
        },
    };

    也能通过new创建

    var o = new Object();
    var a = new Array(); 
    var d = new Date(); 
    var r = new RegExp("js"); 

    ES5定义了一个名为Object.create()的方法,创建一个对象,括号内的第一个参数是这个对象的原型。绝大部分JS对象都有原型对象,这些普通对象都会继承原型对象的属性。

    Object.create()是一个静态函数,不是可以调用的方法。

    var o1=Object.create({x:5, y:6});

    也可以传入null来创建一个没有原型的新对象。注意这样的对象不会有任何方法。除了{}这样的方法,可以通过传入Object.prototype来创建一个普通的空对象。

    2.对象属性的查询设置

    .操作符和[]都可以获取属性的值。

    var auther=book.author;
    var surname=auther.surname;
    var mainTitle = book["main title"];

    也可以创建属性值

    book.edtion=6;
    book["main title"]="ECMAScript";

    注意[]内的值必须是能转换成字符串的值。注意JS是一种弱类型的语言,因此在JS中可以使用这种代码:

    var addr='';
    for(i=0;i<4;i++){
        addr=customer["address"+i]+"
    ";
    }

    但是注意.运算符是不能这样用的

    3.删除属性

    delete可以删除对象自己的属性,但是不能删除继承来的属性,更不能删除原型对象。

    delete book.author;
    delete book["main title"];

    当然有些不能配置的属性是不能删除的,否则会返回false。注意不要随便省略对象名,严格模式下会报错。

    4.检测属性

    检查属性之间的从属关系。可以用in运算符。

    var o={x:1};
    "x" in o; //true
    "y" in o; //false
    "toString" in o; //true

    hasOwnProperty()方法用来检测是否是对象的自有属性,对于继承属性它将返回false。

    var o={x:1};
    o.hasOwnProperty("x");
    o.hasOwnProperty("y");
    o.hasOwnProperty("toString"); //false

    propertyIsEnumerable()则是检测是自有属性且这个属性是可枚举的,不是则返回false,这个枚举属性再说

    另外可以使用”!==”判断一个属性值是否是undefined和null。

    5.枚举属性

    对象继承的JS原型对象内置属性是不可枚举的,代码中添加的都是可枚举的,除非你转换它。

    使用for/in循环来遍历属性。

    var o={x:1, y:2, z:3};
    o.propertyIsEnumerable("toString"); //false
    for (p in o) {
        console.log(p); //打印xyz三个属性
    }
    

    关于属性的四个特性以及几个修改属性特性的方法就不在这里赘述了,太™长了。

    ES5中,将对象作为参数传入Object.getPrototypeof()可以查询他的原型。isPrototypeof()可以一个对象是否是另一个对象的原型。

    关于对象的类属性是一个字符串,表示对象的类型信息。想获取只能用toString()方法,但如果对象继承的toString方法重写了,就得间接调用Function.call()方法.还有一些JS其他数据类型通用的属性就不细讲了。

    6.总结

    对象是JavaScript的基本数据类型。对象是一种复合值,它将很多值聚合在一起,可以通过名字来访问这些值。对象可以看作属性的无序集合,每个属性都是键值对。这种基本数据类型还有很多种叫法,比如散列,散列表,字典,关联数组。

    除了字符串,数字,true,false,null以及undefined之外,JS所有的其他值都是对象。

    对象是动态的,可变的,原型式的继承是JS的核心特征。

  • 相关阅读:
    一个简单的链表结构 分类: C/C++ 数据结构与算法 2015-06-14 16:39 129人阅读 评论(1) 收藏
    整数与浮点数的二进制表示方式 分类: C/C++ 2015-06-13 15:45 54人阅读 评论(0) 收藏
    对string的一些扩展函数 分类: C/C++ 2015-06-12 15:43 170人阅读 评论(1) 收藏
    SQL常用操作 2015-06-12 12:43 20人阅读 评论(0) 收藏
    Google C++编程风格 2015-06-11 11:25 36人阅读 评论(0) 收藏
    C++头文件编译问题 分类: C/C++ 2015-06-10 15:48 32人阅读 评论(0) 收藏
    服务器TIME_WAIT和CLOSE_WAIT详解和解决办法
    解决time_wait过多的问题
    Gdb调试多进程程序
    linux查看硬件配置命令
  • 原文地址:https://www.cnblogs.com/haoqirui/p/12244179.html
Copyright © 2011-2022 走看看