zoukankan      html  css  js  c++  java
  • 对象基础

    对象

    JavaScript的简单数据类型包括数字、字符串、布尔值、null值和undefined值,其他所有的值都是对象,在JavaScript中,对象是可变的键控集合,数组是对象,函数是对象,正则表达式是对象,当然,对象自然也是对象。

    对象是属性的容器,其中每个属性都有名字和值,属性的名字可以是包括空字符串在内的任意字符串,属性值可以是除undefined值之外的任何值。

    创建对象

    1,对象字面量

    对象字面量提供了一种非常方便的创建新对象值的表示法。一个对象字面量就是包围在一对花括号中的零或多“名/值”对,属性名可以是包括空字符串在内的任何字符串。如果属性名是一个合法的JavaScript标识符(由字母、下划线或美元符开头,后面添加字母、数字或下划线的标识符)且不是保留字,则并不强制要求使用引号括住属性名。逗号用来分隔多个“名/值”对。(在ECMAScript5中,保留字可以用作不带引号的属性名,然而对于ECMAScript3来说,使用保留字作为属性名必须使用引号引起来,在ECMAScript5中,对象字面量的最后一个属性后的逗号将忽略,在ECMAScript3中的大部分实现中也可以忽略这个逗号,但是在IE中则报错)。

    var empty = {}; //没有任何属性的对象
    var p = {
      first_name:'li',       //(_)下划线是合法的
      'last-name':'mei',      //(-)连接符是不合法的,必须用字符串表示
      'father name':'lili',   //属性名中有空格,必须用字符串表示
      'for':'all' ,         //"for"为保留字,必须用引号
      age:23,
      height:180,
      like:{
        food:'水果',
        sports:'跑步'
      }
    };

    2,Object.create()

    ECMAScript5定义了一个名为Object.create()的方法,它创建一个新对象,第一个参数就是这个对象的原型,第二个可选参数用以对对象的属性进行进一步描述。Object.create()是一个静态函数,而不是提供给某个对象调用的方法,使用很简单,只需传入所需的原型对象即可。

    var a = Object.create({x:1,y:2});            //a继承了属性x和y
    var b = Object.create(null); //b不能继承任何属性和方法(连基础方法都不继承,比如toString()) var c = Object.create(Object.prototype); //创建了一个普通的空对象,c和new Object()一样

    3,通过new创建对象

    new运算符创建并初始化一个新对象。关键字new后跟随一个函数调用,这里的函数称为构造函数,构造函数用以初始化一个新创建的对象。

    var a = new Object();     //创建一个空对象,和{}一样
    var b = new Array();      //创建一个空数组,和[]一样
    var c = new Date();       //创建一个表示当前时间的Date对象
    var d = new RegExp("js");   //创建一个可以进行模式匹配的正则对象

     属性的查询

    可以通过点(.)或者方括号([ ])运算符开获取属性的值。运算符左侧应当是一个表达式,它返回一个对象。

    对于点(.)来说,右侧必须是一个合法的JavaScript标识符且不是保留字。对于方括号([ ])来说,方括号内必须是一个计算结果为字符串的表达式,这个字符串就是属性的名字。在ECMAScript3中,点运算符后的标识符不能是保留字,比如o.for或者o.class,因为for是关键字,class是保留字。如果一个对象的属性名是保留字,则必须使用方括号的形式访问,如o["for"]。在ECMAScript5中对此放宽了限制,可以在点运算后面直接使用保留字,并且由于点运算更紧凑且可读性更好,优先考虑使用点运算。

    var o = {
      'first-name':'li',
      last_name:'mei',
      x:1,
      y:{
        z:3
      }
    };
    var a = [o,4,[5,6]];
    console.log(o.last_name);
    console.log(o["first-name"]);   //不合法的标识符,必须使用方括号
    console.log(o.x);          //对象o的x属性
    console.log(o.y.z);         //对象o.y的z属性
    console.log(o["x"]);         //对象o的x属性
    console.log(a[1]);         //数组a中索引为1的元素
    console.log(a[2]["1"]);      //数组a[2]中索引为1的元素
    console.log(a[0].x);         //对象o的x属性

     

    引用对象

    对象通过引用来传递,它们永远不会被复制

    var a = {};
    var b = a;
    b.lastname = '三';
    a.firstname = '张'; var first = b.firstname;
    var last = a.lastname; console.log(first); //a和b指向同一个对象的引用
    console.log(last);

    var a = {},b = {}, c = {};   //a、b和c每个都引用一个不同的空对象
    var e = {},f = e, h = f;     //e、f和h都引用同一个空对象
    console.log(a==b);
    console.log(e===f); console.log(e===f);

  • 相关阅读:
    《银光志Silverlight 3.0开发详解与最佳实践》出版电子版——风云编著
    Nigel Parker 40分钟视频演示了微软的 31 项技术(附下载)
    《银光志Silverlight 3.0开发详解与最佳实践》书搞目录
    Silverlight 2使用C#遍历XML(兼容Silverlight3)
    为什么要把Silverlight归入Web 2.0?
    Silverlight明年将占据互联网设备半壁江山
    Silverlight Tools 3.0中文正式版发布(附下载地址)
    银客帝国招聘Silverlight兼职开发人员
    再说招聘:学开车一定要摸方向盘
    Expression Blend 4 下载
  • 原文地址:https://www.cnblogs.com/yuyujuan/p/8432634.html
Copyright © 2011-2022 走看看