前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript学习笔记026-Symbol0Proxy0Module

JavaScript学习笔记026-Symbol0Proxy0Module

作者头像
Mr. 柳上原
发布2018-10-10 10:02:29
3190
发布2018-10-10 10:02:29
举报

Author:Mr.柳上原

  • 付出不亚于任何的努力
  • 愿我们所有的努力,都不会被生活辜负
  • 不忘初心,方得始终

今天听到咱学院的一首歌

很是激励人心

古潭州 源流长 书院镇潇湘 到如今 薪火旺 再铸新辉煌 跨深壑 品类广 传道授业忙 攀险峰 传奇唱 续写新篇章 风雨同舟 江湖共闯 劈破万里浪 相伴有你 日月光芒 将前途照亮 夙兴夜寐 心念联网 只为学员想 相伴有你 携手图强 奋斗在路上 筑平台 伟业昌 悲欢众担当 虹之玉 各一方 甘苦齐分尝 风雨同舟 江湖共闯 劈破万里浪 相伴有你 日月光芒 将前途照亮 夙兴夜寐 心念联网 只为学员想 相伴有你 携手图强 奋斗在路上

谢谢你成就我的梦想

代码语言:javascript
复制
<!DOCTYPE html> <!-- 文档类型:标准html文档 -->

<html lang='en'> <!-- html根标签 翻译文字:英文 -->

<head> <!-- 网页头部 -->

<meat charset='UTF-8'/> <!-- 网页字符编码 -->

<meat name='Keywords' content='关键词1,关键词2'/>

<meat name='Description' content='网站说明'/>

<meat name='Author' content='作者'/>

<title>前端59期学员作业</title> <!-- 网页标题 -->

<link rel='stylesheet' type='text/css' href='css/css1.css'/> <!-- 外链样式表 -->

<style type='text/css'> /*内部样式表*/

</style>

</head>

<body> <!-- 网页主干:可视化区域 -->

<script>
/*
Symbol:
Symbol创建的值,在js里是独一无二的
*/
// Symbol的用法
let a = Symbol(123); // Symbol(123)
let b = Symbol(123); // Symbol(123)
a !== b;

// Symbol.for创建的值不是独一的
let a = Symbol.for(123);
let b = Symbol.for(123);
a === b;

// Symbol的其他值可以显示转化为布尔值和字符串,但是不能转化为数字
// Symbol对象访问
let c = Symbol();
let d = {
[c]: 1,
c: 2
} // d.c = 2,d[c] = Symbol(1)

/*
proxy:
代理器,拦截器
用于修改某些操作的默认行为
*/
// proxy的用法
let obj1 = {
a: 1,
b: 2,
}
let obj2 = new Proxy(obj1, {
get(target, key){
console.log(target); // obj1本身
console.log(key); // obj1的键
// 拦截obj1的值,return出去什么值,下面取到的就是什么值
// return 123;
return target[key];
}
set(target, key, value){
console.log(target); // obj1本身
console.log(key); // obj1的键
console.log(value); // obj1的值
}
})
obj1.a; 
obj1.b; // 当在get里写入数据时,不管obj1里的值是什么,都只会输出get里的数据
obj1.a = 11;
obj1.b = 22;
// 注意:Proxy代理的情况下,被代理的目标内部的this指向会指向Proxy代理

/*
Module:
模块
es6的模块自动使用严格模式("use strict")
模块功能主要命令:
export
import
*/
// export:用于规定模块的对外接口
// export输出变量的写法一:
// a.js
export let a = 1;
export let b = 2;
// export输出变量的写法二:
// profile.js
let a = 1;
let b = 2;
export {a, b}

//export规定的是对外的接口,必须模块内部的变量建立一一对应关系
// export输出的接口,与其对应的值是动态绑定关系,通过该接口,可以取到模块内部实时的值

// import:用于输入其他模块提供的功能
// 使用export定义了模块对外接口后,其他js文件就可以通过import命名加载这个模块
// b,js
import{a, b} from "./a.js";
function setNumber(element){
element.textContent = a + ' ' + b;
}
// 注意:import具有提升效果,会提升到整个模块的头部首先执行
// 由于import是静态执行,所以不能使用表达式或变量这些只有运行时才能得到结果的语法结构

</script>

</body>

</html>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档