对象

目录:

  1. 对象简介
  2. 创建对象
  3. 查询和设置属性
  4. 删除属性
  5. 测试属性
  6. 枚举属性
  7. 扩展对象
  8. 序列化对象
  9. 对象方法
  10. 对象字面量扩展

对象是什么?

概述

  1. 对象的定义
  2. 属性名的语法
  3. 属性值的语法

详细

对象是属性的无序集合。

  • 每个属性都是一个名/值对。
  • 属性名:标识符或字符串
  • 属性值:任意数据类型
let student = {
            firstName: '杰',
            'seconbName': '张',
            "name": '张杰',
            'first-name': '李',
            'main title': '新闻标题',
            'e-mail': 'zjsonic@126.com',
            "for": '1000'
        }
        console.log(student.firstName);

关于字符串属性名

  • 单引号双引号都可以
  • 特殊字符必须加引号
  • for关键字必须加引号

对象是JS的复杂数据类型

  • 对象把很多值聚合在一起:字符串、数值、布尔值、undefined、null、函数object

创建对象的方法

概述

  • 创建对象有三种方法

详细

  • 创建对象

创建对象有三种方法

  • 对象字面量:使用花括号包含的一组逗号分隔的名值对。注意事项:
    • 对象字面量是一个表达式,每次求值都会创建一个新的对象
  • 构造函数法
  • 原型法

增强的对象字面量的语法

概述

  • 如何用新语法写对象

详细
语法:

  • 写入变量: ES2015允许直接写入变量作为对象的属性或方法。
  • 简写:如果变量名与函数属性名相同可简写成一个属性名

构造函数法

定义:
构造函数就是构造对象的模板函数。
语法:

//function Fn(para1,para2){
function Fn(形参1,形参2){
  this.属性名 = 形参1,
  this.属性名 = 形参2
}
  • Fn:函数名。所有的构造函数名首字母要大写。
  • this:在构造函数中的this只是一个占位符,没有指向性。只有当使用new调用构造函数时才会发生指向new出来的那个对象

Object.create()

定义:
Object.create()用于使用指定原型对象创建

关联数组

  • 对象就是一种关联数组
  • 关联数组:以字符串作为索引的数组。

属性访问错误

报错简述:

  • 访问不存在的属性是undefined不会
    报错
  • 访问不存在的对象会报错
  • 访问null和undefined的属性会报错
解决方案
  • if语句嵌套
  • && 与操作符
  • 条件式属性访问操作符:?.

删除属性

语法

delete 对象名。属性名
delete 对象名['属性名']

注意:

  • delete操作只能删除自身属性,不能删除继承属性
  • delete表达式返回的是布尔值

检测属性的三种方法

in操作符:检测属性(自有+继承)是否存在
示例:

        let obj = {x:1,y:undefined}
        console.log('x' in obj);//true
        console.log('y' in obj);//true
        console.log('f' in obj);//false
        console.log('toString' in obj)
        console.log('valueOf' in obj)
        console.log('constructor' in obj)
        console.log(obj);

语法:

'属性名' in 对象

hasOwnProperty():检测属性是否是自有属性

  • has:有
  • own:自己的
  • property:属性
    示例:
let obj = {x:1}
console.log(obj.hasOwnproperty('x'))
console.log(obj.hasOwnproperty('y'))
console.log(obj.hasOwnproperty('constructor'))

语法:

对象.hasOwnProperty('属性名')

propertylsEnumerable():检测属性是否是可枚举的自有属性
Enumerable:可枚举的
语法:

对象.propertylsEnumerable(属性名)

ES2015允许直接写入变量和函数作为对象的属性或方法。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、面向对象编程 对象:包括字符串 数组 自定义对象等,万物皆对象对象是单个事物的抽象,包含属性和行为(方法,功能...
    我爱学习111阅读 3,424评论 0 0
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,675评论 4 16
  • 一.Object 对象 什么是对象 对象是由一对或者多对属性(包含属性名和属性值)组成的集合,属性名也叫做键名,属...
    心存美好阅读 1,508评论 0 0
  • 1 - 对象 1.1 对象的相关概念 ① 什么是对象? 在 JavaScript 中,对象是一组无序的相关属性和方...
    Imkata阅读 2,695评论 0 0
  • 创建对象的4种方式 方式一:通过对象字面量表示法(又称为直接量、原始方式)。object literals 方式二...
    coder_girl阅读 1,643评论 0 1

友情链接更多精彩内容