zoukankan      html  css  js  c++  java
  • JavaScript程序开发(十)—js语法之数据类型

      在前面的几篇博客中学习到了ECMAScript-262的几种基本数据类型,接下来要学习的就是复杂的数据类型Object、Array、Date、RegExp、Function、基本包装类型和内置对象7种类型,复杂数据类型又称为引用类型。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。在其他如Java、C#等面向对象的语言中它被称为类(class)。但因为ECMAScript不具备传统的面向对象语言所支持的类和接口等基本结构,因此,在ECMAScript中将其称为类不是很合适。

    Object类型

    在ECMAScript中,Object是其他一切类型的基类,好比Java中的java.lang.Object。仅仅创建Object类型的实例是没有什么意义的,但关键是理解上面那句话的思想,即Object是js中的基类。Object的每个实例都具有下列的属性和方法:

    constructor构造函数—保存用于创建当前对象的函数。如下面的代码实例,对象obj的constructor值是function Object()

    <script type="text/javascript">
        var obj = new Object();
        var cons = obj.constructor;
        document.write(cons);  //function Object()
    </script>

    hasOwnProperty(propertyName)—用于检测给定的属性是否在当前对象实例中(而不是在对象实例的原型中)。其中,作为参数名称的propertyName必须是以字符串形式指定。

    <script type="text/javascript">
        var obj = new Object();
        var flag = obj.hasOwnProperty("name");
        var cons = obj.constructor;
        document.write(cons);  //function Object()
    </script>

    isPrototypeOf(object)—用于检测传入的对象是否是另一个对象的原型。关于原型的知识将在后续博客中介绍。

    propertyIsEnumerable(propertyName)—用于检测给定的属性能否使用for-in语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名需以字符串形式指定。

    toString()—返回对象的字符串表示;

    valueOf()—返回对象的字符串、数值或布尔值表示。

    创建Object类型实例的方式有两种:

    1. new操作符;
      function test(){
              var person = new Object();
              person.name = "Hello World!";
              person.age = 23;
          }

      在使用new操作创建新对象时,如果不给构造函数传递参数,那么可以省略后面的那一对圆括号,但是不推荐,如下代码实例所示:

          function test(){
              var person = new Object();
              var obj = new Object;
              person.name = "Hello World!";
              person.age = 23;
          }
    2. 对象字面量表示法。
          var person = {
              name : "Hello World!",
              age : 12
          }

      在上面代码可以看出来,不同的属性之间用逗号隔开,但是最后一个属性后面没有逗号。如果在最后一个属性后面也加了逗号,会在IE和Opera中导致错误。在对象字面量中,属性名也可以是字符串,如

          var obj = {
              "name":"hello world",
              "age":12
          }

      使用对象字面量语法时,如果大括号留空,则可以定义只包含默认方法和属性的对象,起作用和使用new操作符创建对象而不添加属性和方法相同,如下代码

      var person = {} // 等同于var person = new Object();

       在通过对象字面量定义对象时,实际上不会调用Object的构造函数,firefox除外。

      一般来说,访问对象属性都是使用点(.)表示法,在很多的编程语言中都使用这个方法,但在ECMAScript中有另一种表示方法,就是使用方括号,但是在使用方括号时,要将要访问的属性以字符串的形式放在方括号中。如下代码实例所示:

        document.write(person.name);
        document.write(person.age);
        document.write(person["name"]);
        document.write(person["age"]);
  • 相关阅读:
    vim复制
    嵌入式Linux学习(二)
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1025 数的划分
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
  • 原文地址:https://www.cnblogs.com/yansj1997/p/2524932.html
Copyright © 2011-2022 走看看