javascript数据类型(三)--- 对象

一、对象

 对象是一种复合值,他将很多值(原始值或者其他对象)聚合在一起,可以通过名字访问这些值。对象也可以看做是属性的无序集合,每个属性嗾使一个名/值对。属性名是字符串,因此我们可以吧对象看做是从字符串到值的映射。

  对象最常见的用法是创建(create)、设置(set)、查找(query)、删除(delete)、检测(test)和枚举它的属性。一下将分别介绍。

1.1 创建对象

  创建对象可以通过对象直接量、关键字new和Object.create()函数来创建对象

1.1.1 对象直接量

  创建对象最简单的方式就是使用对象直接量。属性名默认是字符串,因此写属性名时可以写单引号或双引号,也可以不写(注:若属性名称不符合简单标识符的要求,属性名必须使用引号)。如下:

  var empty = {}                 //没有任何属性的对象

  var point = {x: 0, y: 1}     //两个属性

  var book = {

    name: ‘javascript‘,                                //属性名可以不使用引号

    ‘author‘: ‘tony‘,

    "from": ‘贵阳市图书馆‘,

    "create-time": ‘2019-9-21‘,                //属性名不符合简单标识符的要求,必须使用引号

    ‘001code‘: true                                  //属性名不符合简单标识符的要求,必须使用引号

  }

1.1.2 通过new创建对象

  new运算符创建并初始化一个对象。关键字new后跟随一个函数调用。这里的函数称为构造函数。JavaScript语言核心中的原始类型都包含内置的构造函数。例如:

  var o = new Object();        //创建一个空对象,和{}一样

  var arr = new Array();       //创建一个数组对象,和[]一样

  var date = new Date();     //创建一个表示当前时间的Date对象

1.1.3 Object.create()

  ECMAScript 5 定义了一个名为Object.create()的方法,它创建一个新对象,其中第一个参数是这个对象的原型。例如:

    var obj = Object.create({x: 1, y:2})  //obj继承了属性x和y

  可以通过传入null来创建一个没有原型的新对象,但通过这种方式创建的对象不会继承任何东西,甚至不包括基础方法,比如toString()

    var obj = Object.create(null)  //obj不继承任何属性和方法

  如果想创建一个普通的空对象,需要传入Object.prototype:

    var obj = Object.create(Object.prototype)  //和{}或 new Object()一样

1.2 属性的设置和查询

1.2.1 属性的查询

  查询属性的值可以使用 (.) 或 ([])运算符,需要注意的是:对于(.)来说,右侧必须是和属性名称一样的简单标识符(不知道标识符的自行查询)。而对于([])来说,方括号内必须是计算结果为字符串的表达式,这个字符串就是属性的名字。即:使用点运算符要求属性名必须是符合标识符要求的名称,使用方括号运算符要求方括号内必须是字符串。

  var book = {

    name: ‘javascript‘,

    author: ‘tony‘,

    "create-time": ‘2019-9-21‘

  }

  如上对象,取其属性时,name和author可以使用点运算符或方括号运算符,但是create-time属性只能使用方括号运算符。如下:

  var name = book.name;   name = book[‘name‘];

  var author = book.author;  author = book[‘author‘]

  var createTime = book.create-time  //报错   必须使用 createTime = book[‘create-time‘]

1.2.2 属性的设置

  属性的设置方法与属性的取值方法一样,都可以使用(.)或 ([])运算符。如下:

  book.name = ‘javascript第一版‘;

  book["create-time"] = ‘2000-1-1‘;

1.2.3 什么时候使用([])运算符?

  1. 当属性名不符合简单标识符要求是时,实例看上面 book["create-time"] = ‘2000-1-1‘;

  2.当属性名称不确定时,例如(代码运行完后obj就会包含三个属性test0、test1、test2)

    var test = "test";

    var obj = {};

    for(var i = 0; i < 3; i++) {

      obj[test + i] = i;

    }

1.3 删除属性

  delete运算符可以删除对象的属性。

    delete book.name     //book不再有name属性

    delete book[‘create-time‘]  //book不再有‘create-time’属性

  delete运算符只能删除自有属性,不能删除继承属性。当delete表达式删除成功或没有任何副作用时(比如删除不存在的属性),它返回true

    

1.4 检查属性

  判断某个属性是否存在于某个对象中,可以通过in运算符、hasOwnPreperty(‘属性名‘)方法 和 propertyIsEnumerable("属性名")方法来实现

1.4.1 in运算符

  in运算符的左侧是属性名(字符串),右侧是对象。如果对象的自有属性或继承属性中包含这个属性则返回true

    

 1.4.2 hasOwnPreperty(‘属性名‘)方法

  对象的 hasOwnPreperty(‘属性名‘)方法用来检测给定的名字是否是对象的自有属性。对于继承属性,它的返回值是false

    

 

1.4.3 propertyIsEnumerable("属性名")方法

  只有检测到是自有属性且这个属性是可枚举的它才返回true

    

 1.5 枚举属性

1.5.1 for/in遍历对象属性

  除了检测属性是否存在,通常还需要遍历属性。通常使用for/in遍历,for/in循环可以遍历对象中所有可枚举的属性(包括自有属性和继承属性),它把属性名称赋值给循环变量。对象继承的内置方法不可枚举,但在代码中给对象添加的属性都是可枚举的。例如:

    

  在遍历对象属性的过程中,有时候可能不需要对象继承的属性,或不需要对象中的方法,可以使用以下方法过滤

    

1.5.2 Object.keys(对象) 和 Object.getOwnPropertyNames(对象);

  ECMAScript 5 定义了两个用以枚举属性名的函数。第一个是Object.keys(对象),它返回一个数组,这个数组由对象中可枚举的自有属性组成,第二个是Object.getOwnPropertyNames(对象),它返回一个数组,这个数组由对象中所有的自有属性组成,而不仅仅是可枚举的自有属性。例如:

    

    

    

原文地址:https://www.cnblogs.com/hebing0415/p/11562942.html

时间: 2024-08-01 21:55:21

javascript数据类型(三)--- 对象的相关文章

【Javascript 拾遗之六】深入Javascript数据类型和对象类型

通过前几章的讲解,我们已经摸清楚Javascript的几个重要特征,具有类概念的函数,“函数”实例化的后得到对象, 原型链, 函数的定义等等.作为高级脚本语言的Javascript同样是面向对象的语言,但是Javascript中的数据类型不像JAVA中的“万物皆对象”,本文我们就来深入学习一下Javascript中的几种数据类型及其判断.Let's start learning, move it! 深入Javascript数据类型 1.5种基本数据类型和1种复杂数据类型 5种基本数据类型包括 :

JavaScript 基础(三) 对象 条件判断

JavaScript的对象是一种无序的集合数据类型,它是由若干键对组成. var guagua = { name:'瓜瓜', birth:1988, school:'No.1 Middle School', height:1.70, weight:65, score:null }; JavaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开.注意,最后一个键值对不需要在末尾加,, 如果加了,有的浏览器(如低版本的IE)将报错. 上述对象申明了一个name属性,值

从头开始学JavaScript 笔记(三)——数据类型

一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) 来定义 二.详解 1.undefined:undefined类型只有一个值:undefined,在使用var对变量进行声明但未初始化时,这个变量的值就是undefined. 包含undefined值的变量与尚未定义的变量是不一样的,以下这个例子可以说明: var demo1;//声明但未初始化 al

第三章 javaScript数据类型

目录: 一.javaScript的一些特点和约定 二.基本数据类型 三.复杂数据类型 四.基本数据类型转换 五.typeof()函数 一.javaScript的一些特点和约定: 1.javaScript区分大小写. 2.变量.函数.属性.参数的名字第一个字符必须是一个字母.下划线(_)或者美元符号($).其他字符可以是字母.下划线.数字或美元符号. 3.javaScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,如:javaScript. 4.在代码顶部添加"

Javascript类型系统[数组,对象,数据类型]

JavaScript类型系统 1.var a = [1,11,22,33];  //[]声明数组,数组有个天生的属性length a. 用var 声明的a--是变量,也是对象[既然是对象,它可被赋值任何对象,如数组]. b.运用数组非常灵活,可随时赋值[任何类型],数组长度[容量]自动扩充加长. c.数组索引从0开始. d.数组内元素,可以是其他数组对象.如再赋值 b = ["rty","ljh",123]; a[5]=b;    或a[6]=["rty&

Web开发技术 &mdash;&mdash;JavaScript语法2(变量、数据类型、对象)

JavaScript 变量 变量是存储信息的容器. 实例 var x=2; var y=3; var z=x+y; 就像代数那样 x=2 y=3 z=x+y 在代数中,我们使用字母(比如 x)来保存值(比如 2). 通过上面的表达式 z=x+y,我们能够计算出 z 的值为 5. 在 JavaScript 中,这些字母被称为变量. 提示:您可以把变量看做存储数据的容器. JavaScript 变量 与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y). 变

JavaScript日期时间对象的创建与使用(三)

时钟效果一: 代码: <html> <head> <meta charset="utf-8"/> <title>JavaScript日期时间对象的创建与使用</title> </head> <body> <h2 id="time"></h2> <script type="text/javascript"> function Cl

全面理解Javascript中Function对象的属性和方法

函数是 JavaScript 中的基本数据类型,在函数这个对象上定义了一些属性和方法,下面我们逐一来介绍这些属性和方法,这对于理解Javascript的继承机制具有一定的帮助. 属性(Properties) arguments 获取当前正在执行的 Function 对象的所有参数,是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length.还有就是arguments对象存储的是实际传递给

javascript数据类型(上)

Javascript数据类型有6种: 数值型数据类型(Number): 字符串(String): 布尔型数据(Boolean): 对象(Object): 空(Null): 未定义(Undefined). (一).Number var a = 12; alert(a); 弹出a的值是12. var a = 12; alert(typeof a); [typeof 是查看变量的类型.]弹出的是number,说明a的返回参数为number,类型是Number类型[大写字母是数据类型,小写字母是返回参数

JavaScript筑基篇(二)-&gt;JavaScript数据类型

说明 介绍JavaScript数据类型 目录 前言 参考来源 前置技术要求 JavaScript的6种数据类型 哪6种数据类型 undefined 类型 null 类型 boolean 类型 number 类型 string 类型 复杂 类型 基本型和引用型的不同 关于数据类型的一些常见疑问 为什么typeof null === 'object' string,String,object,Object,function,Function的关系 关于String类型与string类型的疑问 fun