详情参考

1.对象的表示方法

js原生提供Object构造函数。js中所有的对象都是Object的实例。

定义一个对象最简单的就是var obj = {};

ES6属性和方法允许简写。对象的super属性只能用在简写的方法中,其他的地方都会报错。

let a = 5;
let obj = {
a, // 相当于a: a
b() {
return 'lyra'
}
}; 

属性可以使用存取器表示。存取器的使用场合一般是: 属性的值依赖对象内部数据。

var obj = {
count: 5,
get v() { return this.count },
set v(value) { this.count += value;}
}
obj.v; //
obj.v = 10;
obj.v; //

2.属性名

对象要求属性名必须是字符串,如果不是字符串,js引擎会自动将其转为字符串。

var obj={
1e2: 'a',
0xff: 'b', // 会先计算出键值
.23: 'c',
_a: "e"
}
// var obj = {
// 100: 'a',
// 255: 'b',
// '0.23': 'c',
// _a: 'e'
// } 

⚠️如果属性名不是有效的变量标识符,字符串不能省略。

ES6

1)属性名表达式,允许属性名通过[]用表达式准备。[]内有字符串说明是属性名,[]没有字符串说明是变量。

var obj = {
['a' + 'b']: 5,
['h'+'hello']() {
// 这是一个函数
}
}

2)添加Symbol类型的属性名

3.对象方法的name属性

name属性返回函数的名称。

.bind()的函数会返回“bond 函数名”;匿名函数"anoymous";对象的方法名为Symbol("函数名")返回引号中函数名

4.属性遍历的方法

遍历规则:

1)先遍历数字属性,从小到大

2)遍历字符串属性,按照时间从早到晚(push的最早的)

3)遍历Symbol属性,按照时间从早到晚

属性遍历方法:

1)for...in   遍历原型和自身的可枚举属性(不含Symbol)

2)Object.keys() --返回数组,数组元素是自身可枚举属性(不含Symbol)

3)Object.getOwnPropertyNames 遍历自身可枚举和不可枚举属性(不含Symbol)

ES6

4)Object.getOwnPropertySymbols()遍历自身的Symbol属性

5)Reflect.ownKeys() 遍历自身的所有属性

值遍历方法

1)Object.values()---返回数组

2)Object.entries()---返回二维数组

PS:Object.fromEntries()将Map转为对象;或者Object.Entries()遍历的结果(二维数组)转为对象

5.Object.assign(target, ...sources)和扩展运算符...

ES6

1)相同点: 两者相当于另一种形式的遍历,针对的都是可枚举类型

{...null} {...1} {...true} {...undefined}都是{},因为自动转换生成的对象的属性都是不可遍历的属性或者是{}{}

{...'he'} -- {0: 'h', 1: 'e'}

不同点:前者的target参数不能是null和undefined; ...可以是null和undefined

⚠️:...(表达式) ---扩展运算符可以跟表达式

2)对象的拷贝

浅拷贝--遍历拷贝第一层属性。如果属性值是对象,则拷贝的是对象的地址。

⚠️:创建了一个新对象,并将第一层属性拷贝过去。

let a = Object.assign({},obj); // a != obj
let a = {...obj}; // a != obj
let a = obj; a=== obj;

对象的完整克隆规则:1.原型对象相同;2.自身属性相同

Object.assign(Object.create(Object.getPrototypeOf(obj)),obj)
Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj))

6.Object.is(a,b)

功能基本和===相同。

区别: 1)Object.is(NaN, NaN) --true  2) Object.is(+0, -0) -- false

7.原型对象

1)prototype属性是构造函数的属性,实例对象没有该属性

2) __proto__实例对象的属性,表示该实例对象的原型对象

2)读取,设置原型对象

---1.__proto__浏览器实例对象的私有属性,可以读取,写入,但是不建议使用

---2.getPrototypeOf(),setPrototypeOf

---3.Object.create(原型对象,属性描述对象)⚠️如果属性缺省,默认false, value默认undefine

对象(Object)相关的更多相关文章

  1. 对象Object

    功能分类                       1. 创建对象 把各对数自身拥有的可枚举属性复制到第一个对象并返回:obj = Object.assign(o1, o2, o3),o1=obj ...

  2. Python - 面对对象(其他相关,异常处理,反射,单例模式,等..)

    目录 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 二.issubclass(sub, super) 三.异常处理 1. 异常处理 2. ...

  3. 13_Python的面向对象编程-类class,对象object,实例instance

    1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组     2.对象是由类实例化出来的一个具体的对象         属性: 对象拥有的名词,用变量表示         ...

  4. 一个简单的游戏开发框架(五.对象Object)

    前面提到我们把行为Action从对象Object中分离了出来,用各种不同的行为组合出对象的功能.大家都知道,面向对象的一个类,就是数据和操作的集合.操作(行为)被分离出来了,数据怎么办呢?操作依赖的数 ...

  5. Java中的对象Object方法之---wait()和notifiy()

    这一篇咋们继续,接着来介绍wait()和notify()方法,我们都知道这两个方法和之前介绍的方法不太一样,那就是这两个方法是对象Object上的,不属于Thread类上的.我们也知道这两个方法是实现 ...

  6. js内置对象-Object

    1)Object构造函数的方法 返回指定对象的原型对象 Object.getPrototypeOf(mymap); /*{featureStyle: {…}, selfLayersCount: nul ...

  7. java的类class 和对象object

    java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样.而 一个源文件中只能有一个public的类,类名的首字母通常为大写. 使用public修饰的类可以 ...

  8. 1月5日 对象Object, 含过去看的英文档的总结链接

    Object 也是一种数据类型,可以有属性,有method. 反之,在Ruby中,每一种数据类型都是Object.如String,Integer,Float,Array,Hash. IN Ruby e ...

  9. vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')

    vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')

  10. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

随机推荐

  1. Prime Time UVA - 10200(精度处理,素数判定)

    Problem Description Euler is a well-known matematician, and, among many other things, he discovered ...

  2. linux破解navicat for mysql

    第一次执行start_navicat时,会在用户主目录下生成一个名为.navicat64的隐藏文件夹. cd ~/.navicat64 此文件夹下有一个system.reg文件 rm system.r ...

  3. Bean的三种实例化方式

    在面向对象程序中,如要使用某个对象,就需要先实例化这个对象.同样的,在Spring中,要想使用容器中的Bean,也需要实例化Bean.实例化Bean有三种方式,分别是:构造器实例化.静态工厂实例化.实 ...

  4. Python数值日期时间笔记

    数值: 格式化 小数位的处理 随机数: random.choice() 序列中随机选择一个值 random.sample() 获取指定数目的序列 random.shuffle() 打乱顺序 rando ...

  5. AtCoder Grand Contest 040 C - Neither AB nor BA

    传送门 好妙的题啊 首先容易想到简单容斥,统计合法方案数可以考虑总方案数减去不合法方案数 那么先考虑如何判断一个串是否合法,但是直接判断好像很不好搞 这时候就需要一些 $magic$ 了,把所有位置下 ...

  6. hdu 4745 two Rabits

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4745 题解:首先要抽象出题目要求的是啥.首先对于环的问题, 我们可以倍增成链,然后环的所有情况可以通过链来 ...

  7. C#一些面试知识题

    1.简述 private. protected. public.internal 修饰符的访问权限答:private:私有成员, 在类的内部才可以访问(只能从其声明上下文中进行访问). protect ...

  8. 利用贝叶斯算法实现手写体识别(Python)

    在开始介绍之前,先了解贝叶斯理论知识 https://www.cnblogs.com/zhoulujun/p/8893393.html 简单来说就是:贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯 ...

  9. 简单标签(SimpleTag) 学习

    一.由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编写和调用的SimpleTag接口 ...

  10. C++编译 C # 调用方法

    C++编译    C # 调用方法 编译时使用  public ref class ABC {   ... }; 调用时  右键---引用 --- 添加dll引用  即可