对象

ECMA-262对象的定义:无序属性的集合,其属性可以包含基本值,对象,或者函数。可以将对象想象成散列表:键值对,其中值可以是数据或者函数。ECMAScript中的对象其实就是一组数据(属性)和功能(方法)的集合

  1. 创建
    • 对象字面量
      • var o={ key:value, key2:value }
    • 构造函数
      • var o=new Object();
      • o.name='lisa';
      • o.age=20;
  2. 访问对象属性
    • 点操作符
      • console.log(o.name);
    • []
      • [""]:o["name"] 必须是字符串类型,对于变量的访问或者复杂的标识符名称访问比较容易
  3. 删除对象属性
    • delete o.name
  4. 检测属性
    • in :检测当前的属性是否为对象的私有/继承属性,如果不存在返回false
    • hasOwnProperty():检测给定的属性是否是对象的自有属性,对于继承属性将返回false
    • propertyIsEnumerable():检测给定的属性是否是该对象的自有属性,并且该属性是可枚举的。通常由JS代码创建的属性都是可枚举的,但是可以使用特殊的方法改变可枚举性。

对象序列化

对象序列化是指将对象的状态转换为字符串,也可以反序列化,将字符串还原为对象函数,RegExp,Error对象,undefined值不能序列化和反序列化。

  • JSON.stringify() : 将对象类型转换为json字符串
  • JSON.parse():将json字符串类型转化为对象

构造函数和原型对象

所有的函数都有一个原型对象

所有的对象都有一个constructor属性

prototype: 原型对象

constructor:构造函数

_proto_ 构造器原型
  • 静态属性/方法:声明在函数本身内部,只能函数本身调用
    • Object.assign(a,b):将b对象合并到a对象中
    • Object.keys():当前对象的所有属性名所组成的数组
    • Object.values(): 当前对象的所有属性值所组成的数组
    • Object.defileProperty():定义属性
  • 非静态属性/方法:声明在函数的原型对象中,所有实例对象均可以调用
    • constructor:构造者
      • Object.prototype.constructor
      • new Object().constructor
    • toString()
    • valueof()
    • hasOwnProperty()
    • propertyIsEnumerable() 测试属性是否可以遍历
  • Object.defileProperty(obj,key,{}):定义属性
    • {}:
      • 基础属性描述
        • value:' ' ; 设置属性值
        • writable: 是否可写,默认false
        • enumerable:是否可遍历,默认false
        • configurable:当前属性是否可配置/删除,默认false
      • 存取操作符
        • 不能和value同时使用
        • set:function
        • get:function
存取操作符 this表示调用当前set的对象,也就是obj

this是函数内的一个方法,代表函数得执行环境。this指向函数的执行环境,谁调用指向谁。如果没有调用的 就指向全局环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值