javascript-引用类型

引用类型

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

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

    var person = new Object();

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

全局对象

全局对象的属性时全局定义的符号,JavaScript程序可以直接使用。当JavaScript解释器启动时(或者任何浏览器加载新页面的时候),他将创建一个新的全局对象,并给他一组定义的初始属性:

  • 全局属性,如:undefinedInfinityNaN
  • 全局函数,如:isNaN()parseInt()eval()
  • 构造函数,如:Date()RegExp()String()Object()Array()
  • 全局对象,如:MathJSON

全局对象的初始属性并不是保留字,但他们应该当作保留字来对待。如果代码声明了一个全局变量,那么这个变量就是全局对象的一个属性。

包装对象

JavaScript对象是一种复合值:它是属性及已命名值的集合。通过.(或[])来引用属性值。当属性值是一个函数的时候,称其为方法。如:

JSON['parse'](`{"a":1}`)
JSON.parse(`{"a":1}`)

存取字符串、数字或布尔值的属性时创建的临时对象称作包装对象。

let str = 'test'
str.length = 1
console.log(str.length); // 4
str.len = 4; // 创建了一个临时字符串对象`new String(str)`,并给其`len`属性赋值,随机销毁这个对象
var t = str.len; // 通过原始的(没有被修改过)字符串值创建一个新的字符串对象,并尝试读取其`len`属性,这个值自然不存在,表达式结果为undefined
console.log(t); // undefined

!> 对于基本类型来说,如果使用字面量的方式,那么这个变量只是个字面量,只有在必要的时候才会转换为对应的临时对象(nullundefined没有包装对象),一旦引用结束,这个新创建的临时对象就会被销毁
需要注意的是,可以通过String()Number()Boolean()构造函数来显示的创建包装对象:

var a = new String('abc');
a.len = 9;
console.log(a.len); // 9

Object类型

Array类型

posted @ 2019-11-24 17:10  fanlinqiang  阅读(190)  评论(0编辑  收藏  举报