JavaScript 对象 Object 数据类型

目录

1、创建 Object 对象

1.1、使用构造函数创建对象

1.2、使用对象直接量创建对象

2、操作 Object 对象

2.1、引用对象

2.2、复制对象

2.3、克隆对象

2.4、销毁对象


1、创建 Object 对象

对象是 JavaScript 的核心概念之一,也是最常用的数据类型,即引用型数据对象可以包含多个属性,属性以名值对的形式存在,名称是字符串,值可以是任意类型的数据。除了字符串、数字、布尔、symbol、null 和 undefined 六种基本数据类型之外,JavaScript 中的值都是对象。创建对象有 3 种方法,具体介绍如下。

1.1、使用构造函数创建对象

使用 Object 构造函数创建的对象是一个不包含任何属性和方法的空对象,而使用内置构造函数创建的对象将会继承该构造函数的属性和方法。

var obj = new Object();    //创建一个空对象
var arr = new Array();     //创建一个空的数组对象

在上面示例中第 2 行代码创建了一个空的数组对象,但是这个新创建的对象 arr 具有数组操作的基本方法和属性,如 length 属性可以获取该数组的元素个数,而 push() 方法将会为该数组对象添加新元素。

在 JavasScript 中,Object、Array、Function、String 等内置对象都是构造函数,使用 new 运算符可调用它们,并初始化为一个个对象实例。在 JavaScript 中,构造函数具有如下特性。

1、使用new运算符进行调用,也可以使用小括号调用,但返回值不同。
2、构造函数内部通过this关键字指代实例化对象,或者指向调用对象。
3、在构流函数内可以通过应运算符声明本地成员。当然,构造函数结构体内也可以包含私有变量或函数,以及任意执行语句。

1.2、使用对象直接量创建对象

除了使用构造函数创建对象外,还可以使用对象直接量来定义对象,具体用法如下:

var objectName = {        var obj = {    //对象直接量
    属性名:值,                a:1,       //定义属性,即使属性名不加 '' 引号,它也是字符串
    属性名:值,...             b:true     //定义属性,即使属性名不加 '' 引号,它也是字符串
};                        }

简单说明:在对象直接量中,属性名与属性值之间通过冒号进行分隔。属性值可以是任意类型的数据,属性名可以是JavaScript 标识符,或者是任意形式的字符串。属性与属性之间通过逗号进行分隔,最后一个属性末尾不需要逗号。


2、操作 Object 对象

2.1、引用对象

在创建对象之后,可以把对象的地址默值给变量,实现变量对对象的引用。当把变量赋值给其他变量时,则实现多个变量引用同一个对象。

下面例子,定义一个对象直接量,然后定义变量 obj,引用该对象直接量,当 obj 赋值给 obj1 后,再删除变量 obj 对对象的引用,但是对象直接量依然存在,并没有因为删除变量 obj 而同时被删除。

obj = {    //创建对象,并引用该对象给变量
    x:1,
    y:true
}
obj1 = obj;    //复制变量 obj
alert(delete obj);    //删除变量 obj,返回值为 true,说明删除成功
alert(obj1.x);    //读取对象内数据,是示为1,说明对象依然存在
alert(obj.x);    //使用 obj 读取对象内的数据,提示没有定义对象

2.2、复制对象

复制对象的设计思路是:利用 for/in 语句遍历对象成员,然后逐一复制给另一个对象。

在本例中,定义一个 Fun 类,其包含 4 个成员。然后实例化并把它的所有属性和方法都复制给一个空对象 obj ,这样对象 obj 就复制了 Fun 类的所有属性和方法。

function Fun(x,y){    //构造函数 Fun
    this.x = ×;    //本地属性x
    this.y = y;    //本地属性y
    this.add = function(){    //本地方法add()
        return this.x + this.y;
    }
}
Fun.prototype.mul = function(){    //原型方法 mul()
    return this.x * this.y;
}
var fun = new Fun(2,3);    //实例化构造函数,并进行初始化
var obj = {};    //定义一个空对象 obj
for(var i in fun){    //遍历构造函数的实例,把它的所有成员赋值给对象 obj
    obj[i] = fun[i];
}
alert(obj.x);    //返回 2
alert(obj.y);    //返回 3
alert(obj.add);  //返回 5
alert(obj.mul);  //返回 6

2.3、克隆对象

通过克隆对象可以避免复制对象操作的低效率具体方法如下:

首先,为 Function 对象扩展一个方法,该方法能够把参数对象赋值给一个空构造函数的原型对象,然后实例化构造函数,并返回实例对象,这样该对象就拥有构造函数包含的所有成品。

Function.prototype.clone = function(obj){    //对象克隆方法
    function Temp(){};    //新建空构造函数
    Temp.prototype = obj; //把参数对象原值给该构造函数的原型对象
    return new Temp();    //返回实例化后的对象
}

然后,调用该方法来克隆对象。克隆方法返回的是一个空对象,不过它存储指了指向给定对象的原型对象指针。这样就可以利用原型链来访问它们,从而在不同对象之间实现继承关系。

var obj = Function.clone(new Fun(2,3));    //调用Function对象的克隆方法
alert(obj.x);    //返回 2
alert(obj.y);    //返回 3
alert(obj.add);  //返回 5
alert(obj.mul);  //返回 6

2.4、销毁对象

JavaScript 提供了一套垃圾回收机制,能够自动回收无用存储单元。当对象没有被任何变量引用时,JavaScript 会自动侦测,并运行垃圾回收程序把这些对象注销,以释放内存。

每当函数对象被执行完毕,垃圾回收程序就会自动被运行,释放函数所占用的资源,并释放局部变量。当把对象的所有引用变量都设置为 null 时,可以强制对象处于废除状态,并被回收。

var obj = {    //创建对象,并引用该对象给变量obj
    x:1,
    y:true
}
obj = null;    //定义对象引用变量为 null,即废除对象
alert(obj.x);    //提示系统错误,找不到对象

对于不用的对象,应该把其所有引用变量都设置为 null,将对象废除,以释放内存空间,既节省系统开支,又可以预防错误。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值