`
weigang.gao
  • 浏览: 467435 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

引用类型(4)

 
阅读更多

     1.引用类型的值(对象)是引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组合在一起。它也常被称为类,但这种称呼并不妥当。尽管ECMAScript从技术上讲是一门面相对象的语言,但它不具备传统的面相对象语言所支持的类和接口等基本结构。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。

       注意:虽然引用类型与类看起来相似,但它们并不是相同的概念。

 

       2.对象是某个特定引用类型的实例。新对象是使用new操作符后跟一个构造函数来创建的。构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。请看下面这行代码:

          var person = new Object();

       这行代码创建了Object引用类型的一个新实例,然后把该实例保存在了变量person中。使用的构造函数是Object,它只为新对象定义了默认的属性和方法。ECMAScript提供了很多原生引用类型(例如Object),以便开发人员用以实现常见的计算任务。 

  

3.创建Object实例的方式有两种

a.使用new操作符后跟Object构造函数 

var person = new Object();
person.name = “gaoweigang”;
person.age = 27;

        b.使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。下面这个例子就使用了对象字面量语法定义了与前面那个例子中相同的person对象 

var person = {
    name : “gaoweigang”,
    age : 29
} ;

        在这个例子中,左边的花括号({)表示对象字面量的开始,因为它出现在了表达式上下文(expression context)中。ECMAScript中的表达式上下文指的是能够返回一个值(表达式)。赋值操作符表示后面是一个值,所以左花括号在这里表示一个表达式的开始。同样的花括号,如果出现在一个语句上下文(statement context)中,例如跟在if语句条件的后面,则表示一个语句块的开始

 

4. 区别:

情景1: var person = new Object();

情景2:var person = {};//使用对象字面量定义对象时,实际上不会调用Object构造函数

 

5.最好的做法是对那些必须值使用命名参数,而使用对象字面量来封装多个可选参数

 

6.访问对象属性的方式有2种

 a. 使用点表示法

   alert(person.name);//点表示法访问对象属性

 

 b.使用方括号表示法来访问对象的属性

   如何通过变量来访问来访问对象的属性

var propertyName = “name”;
alert(person[propertyName]);//在Javascript中可以使用方括号表示法来访问对象属性

    如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法,eg:

   person[“first  name”] = “gaoweigang”;//由于属性中有空格,因此不能使用点表示法来访问对象属性

由于“first name”中包含一个空格,所以不能使用点表示法来访问它。然而,属性名中是可以包含非字母非数字的,这时候就可以使用方括号表示法来访问它们。

 

Array类型

1.除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了。而且,ECMAScript中的数组与其它多数语言中的数组有着相当大的区别。虽然ECMAScript数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript素组的每一项可以保存任何类型的数据。

 

2.创建数组的基本方式有两种。

a. 使用Array构造函数

   var colors = new Array();

   在使用Array构造函数时也可以省略new操作符,如下面的例子所示,省略new操作符的结果相同:

   var colors = Array(3);//创建一个包含3项的数组

 

 b. 创建数组的第二种基本方式是使用数组字面量表示法。数组字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如下所示:

   var colors = [“red”,”green”];

注意:与对象一样,在使用数组字面量表示法时,也不会调用Array构造函数。数组的length属性很有特点——它不是只读的。因此,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项

 

单体内置在对象

1.Global对象

ECMA-262对内置对象的定义是:“由ECMAScript实现提供的,不依赖于宿主环境对象,这些对象在ECMAScript程序执行之前就已经存在了。”意思就是说,开发人员不必显示地实例化内置对象,因为它们已经实例化了。前面我们已经介绍了大多数内置对象,例如ObjectArrayStringECMA-262还定义了两个单体内置对象:GlobalMath

2.Math对象

ECMAScript还为保存数学公式和信息提供了一个公共位置,即Math对象。与我们在JavaScript直接编码的计算功能的计算功能相比,Math对象提供的计算功能执行起来要快得多。

 

 

Global对象与window对象的区别?

Global对象是ECMAScript描述的顶层对象,Window对象是BOM的顶层对象,

实际上,没有什么Global对象,一些人意淫出来的而已。提出的目的是为了解决JavaScript在非浏览器环境下的一些逻辑上的问题。在浏览器上,Global对象就是指window

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics