JavaScript进阶内容详解

JavaScript进阶内容详解

记录js进阶学习的相关内容,本篇算是一个系列的开篇,计划深度学习和js以及v8引擎相关的部分内容。

1.对象

基础

对象用来存放键值对,其中值得注意的是,存在两种方法去创建一个空的的对象。

js 复制代码
let user = new Object() // 构造函数方法
let user = {} // "字面量"方法

可以使用delete方法去移除对象属性

js 复制代码
delete user.name

多词属性,需要给键名加上引号

js 复制代码
let user = {
    "login name": "xxx"
    temp: 123
}

方括号

对象名中可以是方括号,此为计算属性,如下,可从fruit中获取相应值,目前在前端框架中似乎很少会这样去用。可能是因为响应式存在的原因。

js 复制代码
let fruit = prompt('123', 'apple');
let user = {
    [fruit]: 5
};
console.log(user.apple);

其本质上,和下面的代码相同,由此可见js的自由性,感觉和自然语言也没有什么区别了

js 复制代码
let fruit = prompt('123', 'apple');
let bag = {};
bag[fruit] = 5;

属性存在测试,'in'操作符

如下,in用于判断当前对象中是否存在某一个键值

js 复制代码
let bag = {
    fruit: 'apple'
}
console.log("name" in bag) //false
console.log("fruit" in bag) //true

其基本作用实际和console.log(bag.name === undefined)类似,那么既然可以通过undefine来判断是否存在键值,要in还有什么作用呢?那就是键名存在,但是其值为undefined的情况。

js 复制代码
let bag = {
    fruit: undefined
}

console.log(bag.fruit === undefiend) //false
console.log("fruit" in bag) //true

对象的排序

整数会按照升序排列,其他会按照创建顺序排列(注意:Number只能转化整数,如Number('1.2')就是错的)

相关推荐
+VX:Fegn08957 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·课程设计
Nicander8 小时前
我给 Excalidraw 做了一个本地工作区:DrawSpace
前端·开源
linux_cfan10 小时前
17 · 引擎适配器全景:HLS/DASH/Vimeo/Mux/Cast
前端·javascript·音视频
计算机魔术师10 小时前
烧掉2780亿美元还不够?OpenAI的资本豪赌让人头皮发麻
前端
IT_陈寒11 小时前
Java线程池用错参数,我的服务居然悄悄崩溃了
前端·人工智能·后端
卡布鲁11 小时前
React useMemo 与 useCallback 完全指南:原理、场景与避坑
前端·react.js
碳基修炼12 小时前
排查记:本地 devServer 是 http,浏览器却把 302 重定向升级成了 https
前端·http
步行cgn12 小时前
Spring p 命名空间注入详解
java·前端·spring
何何____12 小时前
Vue 生命周期详解
前端·javascript
江米小枣tonylua12 小时前
TypeScript 全面の拥抱 !Prisma 8 + Electron 升级实战
前端