javascript相关操作

对象相关:
使用 in判断属性是否在对象中
使用for( let key in obj) 对对象的属性进行遍历

对象的拷贝
Object.assign(dest,[ src1, src2, src3…]) 返回的是dest

如果属性里面也是一个对象,那么就应该使用另一种拷贝方法
为了解决这个问题,我们在复制的时候应该检查 user[key] 的每一个值,如果它是一个对象,那么把它也复制一遍,这叫做深拷贝(deep cloning)。
lodash _.cloneDeep(obj)。

“Symbol” 值表示唯一的标识符。

Symbol 允许我们创建对象的“隐藏”属性,代码的任何其他部分都不能意外访问或重写这些属性。

// 从全局注册表中读取
let id = Symbol.for(“id”); // 如果该 Symbol 不存在,则创建它

// 再次读取(可能是在代码中的另一个位置)
let idAgain = Symbol.for(“id”);

存储在对象中函数称之为『方法』。
对象执行方法进行『操作』,比如 object.doSomething()。
方法可以将该对象引用为 this。
this 的值是在运行时求值的。

函数声明使用的 this 只有等到调用时才会有值。
函数可以在对象之间进行共用。
当函数使用『方法』语法 object.method() 调用时,调用过程中的 this 总是指向 object

构造函数首字母大写

数组
new Array();
Map and Set
map.keys() – 返回键名的遍历器,
map.values() – 返回键值的遍历器,
map.entries() – 返回实体 [key, value] 的遍历器,默认在 for…of 中使用。

map和对象之间相互转换
let map = new Map(Object.entries(obj));
let obj = Object.fromEntries(map.entries());

WeakMap
只能使用对象作为key, 当对象不再使用的时候,weakMap中的引用也会释放
WeakSet

解构赋值
数组的,对象的
// 有一个存放了名字和姓氏的数组
let arr = [“Ilya”, “Kantor”]

// 解构赋值
let [firstName, surname] = arr;
它通过将结构中的各元素复制到变量中来达到“解构”的目的。

数组中不想要的元素也可以通过添加额外的逗号来把它丢弃:

如果我们不仅要获得第一个值,还要将后续的所有元素也收集起来——我们可以使用三个点 “…” 加一个参数来接收“剩余的”元素:

对象的解构赋值
// { 原属性:目标变量 }
let {width: w, height: h, title} = options;

日期和时间

let date = new Date()
new Date(year, month, date, hours, minutes, seconds, ms)

date.getTime()
date.getFullYear
date.getMonth() // 获取月份从 0 到 11。
date.getDate() //获取当月的日期,从 1 到 31,这个方法名称可能看起来有些令人疑惑。
getDay()获取一周的第几天

Date.parse

JSON

JSON.stringify 将对象转换为 JSON。
JSON.parse 将 JSON 转换回对象。

递归

Rest 参数(剩余参数)…
函数的上下文会提供一个非常特殊的类数组对象 arguments,所有的参数被按序放置。

arguments 是一个类数组且可遍历的变量,但它终究不是数组

Spread操作符[展开操作符]
当在函数调用时使用 …arr,它会把可迭代的对象 arr “展开”为参数列表。

若 … 出现在函数的参数列表,那它表示的就是 Rest 参数,它会把函数多余的实参收集到一个数组中。
若 … 出现在函数调用或类似的表达式中,那它就是 Spread 操作符,它会把一个数组展开为逗号分隔的元素列表。

函数保存其外部的变量并且能够访问它们称之为闭包

var 没有块作用域,且会被提升

发布了370 篇原创文章 · 获赞 81 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/lineuman/article/details/104032721