前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ECMAScript6 基础知识点(下)

ECMAScript6 基础知识点(下)

作者头像
Nian糕
修改于 2024-03-19 06:47:32
修改于 2024-03-19 06:47:32
36300
代码可运行
举报
运行总次数:0
代码可运行
Unsplash
Unsplash

Symbol

Symbol 为独一无二的值,当 Symbol 值作为对象的属性名的时候,不能用点运算符获取对应的值,因为用点运算符的话,会导致 JavaScript 把后面的属性名为理解为一个字符串类型,而不是 Symbol 类型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let name = Symbol()
let person = {
    [name]: 'Nian糕'
}
person[name] // 'Nian糕'
person.name // undefined

Proxy

Proxy 对象用于拦截并代理目标对象,包括函数,原生数组,甚至另一个代理,常见的方法有:ownKeys() 方法,用于拦截 Object.ownKeys() 对过滤对象属性的遍历;has() 方法,拦截 key in object 的操作,结果会返回一个布尔值;apply() 方法,代理对象为函数时进行拦截;Proxy.revocable() 取消代理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let niangao = {"age": 17}
let xlb = new Proxy(bankAccount, {
    get:(target, property) => {
        if(target[property] > 17){
            return target[property]
        }else{
            return "未成年"
        }    
    },
    set:(target, property, value) => {
        if(!Number.isInteger(value)){
            return "请设置正确的年龄"
        }
        target[property] = value
    }
})

xlb.age // "未成年"
xlb.age = 18 // 18
xlb.age //18

for...of 循环

JavaScript 的循环有很多,常用的 for 循环遍历数组代码不够简洁,forEach 循环写法简洁,但无法中断整个循环, for...in 循环常用于对象的循环,若用于数组的循环,得到的 i 为字符串类型,for...of 循环与 for...in 循环类似,可以用 break 来终止整个循环,或使用 continute 跳出当前循环,结合 keys() 还可获取到 Number 类型的循环索引

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [ 1, 2, 3, 4, 5 ]
for(let value of arr) {
    console.log(value) // 1 2 3 4 5
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [ 1, 2, 3, 4, 5 ]
for(let value of arr) {
    if(value == 3){
        break;
    }
    console.log(value) // 1 2
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [ 1, 2, 3, 4, 5 ]
for(let value of arr) {
    if(value == 3){
        continue;
    }
    console.log(value) // 1 2 4 5
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [ 1, 2, 3, 4, 5 ]
for(let index of arr.keys()){
    console.log(index) // 0 1 2 3 4
}

Set 结构

Set 的值不会包含重复项,通过 size 属性来获取成员的个数, delete() 方法用于删除指定值,has() 方法用于判断是否含有指定的值,clear() 方法用于清除所有成员,Set 结构的键名和键值是同一个值,可通过 keys() 方法和 values() 方法进行验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let s = new Set([1,2,3])
console.log(s) // Set(3) {1, 2, 3}
s.add(4)
console.log(s) // Set(4) {1, 2, 3, 4}
s.size // 4
s.delete(2)
console.log(s) // Set(3) {1, 3, 4}
s.delete(5) // false
s.has(1) // true
s.clear()
console.log(s) // Set(0) {}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const s = new Set(['a', 'b', 'c'])
s.keys() // SetIterator {"a", "b", "c"}
s.values() // SetIterator {"a", "b", "c"}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const s = new Set(['a', 'b', 'c'])
// entries()方法返回一个键值对的遍历器
for(let [i, v] of s.entries()){
    console.log(i, v)
}
// a a
// b b
// c c
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const s = new Set(['a', 'b', 'c'])
s.forEach((value, key) => {
    console.log(value, key)
})
// a a
// b b
// c c

WeakSet 结构

WeakSet 结构和 Set 类型很相似,同样不会存储重复的值,并提供了 add() 方法,delete() 方法,has() 方法供开发者使用,不同的是,它的成员必须是对象类型的值,其成员都是对象的弱引用,随时被回收机制所回收,所以 WeakSet 结构不可遍历

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let ws = new WeakSet([{"age": 17}])
console.log(ws) // WeakSet {Object {age: 17}}

Map 结构

Map 结构跟 Object 对象很像,但更为灵活,它的 key 键名的类型可以是各种类型的值,不再局限于字符串类型,跟 Set 结构一样,参数通过数组进行传递,常用的方法有 set() 方法,用于给实例设置一对键值对

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let m = new Map([
    ["name", "Nian糕"],
    ["age", 17]
])
console.log(m) // Map(2) {"name" => "Nian糕", "age" => 17}
m.set("food", "小笼包") // Map(3) {"name" => "Nian糕", "age" => 17, "food" => "小笼包"}
m.size // 3
m.get("name") // "Nian糕"
m.delete("food") // true
console.log(m) // Map(2) {"name" => "Nian糕", "age" => 17}
m.has('name') // true
m.clear()
console.log(m) // Map(0) {}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let m = new Map([
    ["name", "Nian糕"],
    ["age", 17]
])

for(let key of m.keys()){
    console.log(key) // name age
}

for(let value of m.values()){
    console.log(value) // "Nian糕" 17
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let m = new Map([
    ["name", "Nian糕"],
    ["age", 17]
])

for(let [key, value] of m.entries()){
    console.log(key, value);
}
// name Nian糕
// age 17
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let m = new Map([
    ["name", "Nian糕"],
    ["age", 17]
])

m.forEach(function(value,key){
    console.log(key, value);
})
// name Nian糕
// age 17

WeakMap 结构

WeakMap 结构和 Map 结构很类似,不同点在于 WeakMap 结构的键名只支持引用类型的数据,即数组,对象,函数,跟 Map 一样,WeakMap 也拥有 get(), has(), delete() 方法,但不支持 clear() 方法,键名中的引用类型是弱引用,和 WeakSet 同样不支持遍历

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let wm = new WeakMap()
wm.set([1], 2)
wm.set({'name': 'Nian糕'}, 17)
function fn(){}
wm.set(fn, 6)
console.log(wm) // WeakMap { function fn(){} => 6, Array(1) => 2, Object => 17 }

Class 类

JavaScript 的类 Class 本质上也是基于原型 prototype 的实现方式做了进一步的封装,通过关键字 Class 进行类的声明,其中包含了 constructor 构造方法,默认返回实例对象,构造方法中的 this,指向的是该类实例化后的对象,子类对父类的继承通过 extends 关键字实现,通过 super 方法来访问父类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Animal {
  costructor(name) {
    this.name = name
  }
  eat() {
    console.log(`this is ${this.name}`)
  }
}

class Dog extends Animal {
  constructor(name) {
    super(name) // 让Animal也有name参数
    this.name = name
  }
  bark() {
    console.log(`${this.name} bark`)
  }
}

const hhh = new Dog('哈士奇')
hhh.eat() // this is 哈士奇
hhh.bark() // 哈士奇 bark
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Scrapy(4)spider 帮助你寻找最美小姐姐
我们都知道我们平常想下载一些漂亮的图片来装饰自己的桌面,可是找到了都是需要收费的网站,真的很恼火,所以今天小编,可能要带大家实现这么一个工具,可以用来爬取某个网站的好看的图片
公众号---人生代码
2020/05/16
5020
起点小说爬取--scrapy/redis/scrapyd
之前写了一篇网络字体反爬之pyspider爬取起点中文小说 可能有人看了感觉讲的太模糊了,基本上就是一笔带过,一点也不详细。这里要说明一下,上一篇主要是因为有字体反爬,所以我才写了那篇文章,所以主要就是提一个字体反爬的概念让大家知道,其中并没有涉及到其他比较难的知识点,所以就是大概介绍一下。
星星在线
2018/08/21
1.8K0
起点小说爬取--scrapy/redis/scrapyd
收藏| Scrapy框架各组件详细设置
大家好,关于Requests爬虫我们已经讲了很多。今天我们就说一下Scrapy框架各组件的详细设置方便之后更新Scrapy爬虫实战案例。
刘早起
2020/05/14
7430
分布式爬虫搭建系列 之三---scrapy框架初用
其次,通过我们的神器PyCharm打开我们的项目--crawlquote(也可以将PyCharm打开我们使用虚拟环境创建的项目)
wfaceboss
2019/04/08
5860
分布式爬虫搭建系列 之三---scrapy框架初用
Python自动化开发学习-Scrapy
讲师博客:https://www.cnblogs.com/wupeiqi/p/6229292.html 中文资料(有示例参考):http://www.scrapyd.cn/doc/
py3study
2020/01/08
1.6K0
新闻推荐实战(四):scrapy爬虫框架基础
本文属于新闻推荐实战-数据层-构建物料池之scrapy爬虫框架基础。对于开源的推荐系统来说数据的不断获取是非常重要的,scrapy是一个非常易用且强大的爬虫框架,有固定的文件结构、类和方法,在实际使用过程中我们只需要按照要求实现相应的类方法,就可以完成我们的爬虫任务。文中给出了新闻推荐系统中新闻爬取的实战代码,希望读者可以快速掌握scrapy的基本使用方法,并能够举一反三。
用户9656380
2022/04/14
8780
新闻推荐实战(四):scrapy爬虫框架基础
#Python爬虫#Item Pipeline介绍(附爬取网站获取图片到本地代码)
当spider爬取到item后,它被发送到项目管道(Item Pipeline),通过几个组件按顺序进行处理。每一个Item Pipeline是一个实现了简单方法的Python类,它接收到一个item并对其执行一个操作,也要决定该item是否应该继续通过管道,或者被丢弃,不再进行处理。
程序员迪迪
2022/01/06
1.4K0
scrapy框架
scrapy genspider 应用名称 爬取网页的起始url (例如:scrapy genspider qiubai www.qiushibaike.com)
全栈程序员站长
2022/09/07
1.7K0
scrapy框架
一个scrapy框架的爬虫(爬取京东图书)
我们的这个爬虫设计来爬取京东图书(jd.com)。 scrapy框架相信大家比较了解了。里面有很多复杂的机制,超出本文的范围。 1、爬虫spider tips: 1、xpath的语法比较坑,但是你可以在chrome上装一个xpath helper,轻松帮你搞定xpath正则表达式 2、动态内容,比如价格等是不能爬取到的 3、如本代码中,评论爬取部分代码涉及xpath对象的链式调用,可以参考 # -*- coding: utf-8 -*- # import scrapy # 可以用这句代替下面三句,但不推荐
用户1225216
2018/03/05
1.4K0
Scrapy框架的使用之Scrapy入门
接下来介绍一个简单的项目,完成一遍Scrapy抓取流程。通过这个过程,我们可以对Scrapy的基本用法和原理有大体了解。 一、准备工作 本节要完成的任务如下。 创建一个Scrapy项目。 创建一个Spider来抓取站点和处理数据。 通过命令行将抓取的内容导出。 将抓取的内容保存的到MongoDB数据库。 二、准备工作 我们需要安装好Scrapy框架、MongoDB和PyMongo库。 三、创建项目 创建一个Scrapy项目,项目文件可以直接用scrapy命令生成,命令如下所示: scrapy st
崔庆才
2018/06/25
1.4K0
Scrapy框架的使用之Item Pipeline的用法
Item Pipeline是项目管道,本节我们详细了解它的用法。 首先我们看看Item Pipeline在Scrapy中的架构,如下图所示。 图中的最左侧即为Item Pipeline,它的调用发生
崔庆才
2018/06/25
7.3K1
Scrapy框架
简单网页的爬取可以利用re模块,复杂网页的爬取对于内容的提取则会显得十分麻烦。Scrapy框架是python下的一个爬虫框架,因为它足够简单方便受到人们的青睐。
爱编程的小明
2022/09/05
4960
Scrapy框架
Scrapy框架之批量下载360妹纸图
0.导语1.项目初始化2.定义存储结构3.Spider核心代码4.pipeline下载及存储5.json知识
公众号guangcity
2019/09/20
5510
Scrapy框架之批量下载360妹纸图
爬虫框架scrapy
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
菲宇
2019/06/12
1.8K0
爬虫框架scrapy
Scrapy项目实战:爬取某社区用户详情
get_cookies.py from selenium import webdriver from pymongo import MongoClient from scrapy.crawler import overridden_settings # from segmentfault import settings import time import settings class GetCookies(object): def __init__(self): # 初始化组件
hankleo
2020/09/17
5720
实操 | 从0到1教你用Python来爬取整站天气网
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。
润森
2019/09/17
7470
实操 | 从0到1教你用Python来爬取整站天气网
17.splash_case06_ScrapySplashTest-master
taobao.py # -*- coding: utf-8 -*- from scrapy import Spider, Request from urllib.parse import quote from scrapysplashtest.items import ProductItem from scrapy_splash import SplashRequest script = """ function main(splash, args) splash.images_enabled = f
hankleo
2020/09/17
3950
Python(十六)
接下来的几篇,我们将介绍一下最流行的爬虫框架 Scrapy。本篇,我们会介绍一下 Scrapy 的基本使用。
1ess
2021/11/01
3260
Python(十六)
【0基础学爬虫】爬虫基础之scrapy的使用
大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为自动化工具 Selenium 的使用。
K哥爬虫
2024/07/01
1680
【0基础学爬虫】爬虫基础之scrapy的使用
《手把手带你学爬虫──初级篇》第6课 强大的爬虫框架Scrapy
Scrapy是一个Python爬虫应用框架,爬取和处理结构性数据非常方便。使用它,只需要定制开发几个模块,就可以轻松实现一个爬虫,让爬取数据信息的工作更加简单高效。
GitOPEN
2019/01/29
1.1K0
《手把手带你学爬虫──初级篇》第6课  强大的爬虫框架Scrapy
相关推荐
Scrapy(4)spider 帮助你寻找最美小姐姐
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档