2018-08-06 第一天课 ES6前奏

1.Symbol

  • ES6新增的 数据类型 -基本类型
  • 值是由Symbol 函数 调用产生的
  • 相同的Symbol 函数 的 返回值 是唯一的 彼此是不同的
  • 即使每次 Symbol 函数 传参的值是一样的 函数的返回值是不同的 或者说是每次存储的值是不同的
  • Symbol 函数的作用是 < 属性私有化 数据保护 >
        var s1 = Symbol();
        console.log( typeof s1) ;

        var s2 = Symbol();
        console.log(s1);
        console.log(s2);
        console.log(s1 === s2)

        var s3 = Symbol('sss');
        var s4 = Symbol('sss');
        console.log(s3);
        console.log(s4);
        console.log(s3 === s4);

2.Symbol实例

          function Person (name,gender) {
              this.name = name ;
              this.gender = gender ;

            }

          var p1 = new Person('momo','女');

          console.log(p1.gender);
  • 我希望一个 Person 出生之后,性别永远无法改变 一直到死
  • 里面的函数自执行 闭包 var Person = P
  • _gender = gender 直接赋值 给内部的私有变量 作为一种受保护的 私有变量 这是原来的处理方式 有很多坑 <Map 函数????>
        var Person = (function(){

            var _gender = '' ;


            function P (name,gender) {
                this.name = name ;
                //this._genderr = gender ;

                _gender = gender ;

            }
            P.prototype.getGender = function () {
                return _gender ;
            }

            return P ;
        })() ;

        var p1 = new Person('momo','女') ;
        console.log(p1);
        console.log(p1.getGender());
  • 两个Symbol 函数的返回值是不同的 保护私有属性
  • 和上面一种方法的比较 : 上面一种方法 对象上根本就不存在 一个 _gender 的属性 因为我们根本就没有 给对象加这个属性
  • 这个属性你可以看到他(在控制台) 但是你无法访问
  • Symbol函数 只要在两个时间点 调用 那么他们的返回值 一定是不同的
  • 随机数是无法实现这个 属性私有化 数据保护 的功能的 不能阻止外部的访问的 你会发现不是undefined~~

3.块作用域

        {
            var a = 1 ;
            let b = 1 ;
            const c = 3 ;
        }
        console.log(a); // 还是可以访问的 
        console.log(b);//b是未定义的
        console.log(c);
  • 作用域 : 变量的 作用范围
  • 原生 全局 函数 ES6 新增 块作用域 一对{} 包含的范围
  • var不支持块作用域
  • {}和 java 是一样的
  • 不支持 变量提升 预解析 代码的先后顺序 不允许写反
  • 不允许在同一个作用域内重复声明 数据的安全性大大的提高
3.块作用域.html:34 Uncaught ReferenceError: b is not defined
    at 3.块作用域.html:34

4.选项卡

    <style>
        button.active {
            background : yellow;
        }
        p.active {
            display :block;
        }
        p{
            display: none ;
        }
    </style>
</head>
<body>
    <button class = 'active'>选项一</button>
    <button>选项二</button>
    <button>选项三</button>

    <p class = 'active'>内容一</p>
    <p>内容二</p>
    <p>内容三</p>

    <script>
        var buttons = document.querySelectorAll('button');
        var ps = document.querySelectorAll('p');

        for (var i = 0; i < buttons.length; i++) {
            buttons[i].index = i ;
            buttons[i].onclick = function () {

                for (var i = 0; i < buttons.length; i++) {
                    buttons[i].className = '' ;
                    ps[i].className = '' ;
                };

                this.className = 'active' ;
                ps[this.index].className = 'active' ;
            }


        };

let版本

        var buttons = document.querySelectorAll('button');
        var ps = document.querySelectorAll('p');

        for (let i = 0; i < buttons.length; i++) {
            buttons[i].onclick = function () {

                for (let i = 0; i < buttons.length; i++) {
                    buttons[i].className = '' ;
                    ps[i].className = '' ;
                };

                this.className = 'active' ;
                ps[i].className = 'active' ;
            }


        };

5.解构赋值

  • 允许按照一定的模式 从数组的对象中取值,并对变量进行赋值,这被称为解构赋值
  • 需要去庞大对象数据中的某一个对象,就用到了解构赋值
  • 给编程带来 简便 模块化 就是基于 解构赋值 可读性增强
    <script>
        /*

            允许按照一定的模式 从数组和对象中  提取值 并对变量进行赋值 这被称为解构赋值  

        */

         let [a,b,c] = [1,2,3] ;

         console.log(a,b,c);


        //---------------------------------


         let arr = [1,2,3] ;

         let [a,b,c] = arr;

         console.log(a,c);



        //--------------------------------------------------------------

         let { foo ,  bar} = { foo : 'aaa' , bar : 'bbbb' }  ;   //左侧对象中变量的名称  必须是 右侧对象中存在的 key 不需要解构的顺序对应 它是key值对应

        console.log(bar,foo); 


        //----------------------------------------------------

         let { left : L,top : T } = { left:123,top:124};// 防止变量名已经存在 的报错问题  给变量起个别名 
         console.log(L,T);


        //---------------------------------------------------------

         let { foo : [a,b]} = { foo : [10,20] , bar : 'bbb'} ;  //多重解构
         console.log(a,b) ;

        //-------------------------------------------------------------

        let { left:L ,top : T ,width :W ,height :H} = getComputedStyle(document.body) ;//给编程带来 简便  模块化 就是基于 解构赋值  可读性增强 
        console.log(L,T,H,W);
    </script>

6.扩展运算符

  • ... 数据(数组,对象)的脱衣服,穿衣服
  • 数组或者对象转化成参数序列
        var arr = [14,3,5,2,6,8] ;

        console.log(Math.max( ...arr ));
        var arr1 = [14,3,5,2,6,8] ;
        var arr2 = [09,14,3,5,2,6,8];

        console.log([ ...arr1, ...arr2]);

7.字符串扩展

<script>


        /*
            模版字符串  : 保持格式 


        */

        var str = 'a   b' ;

        console.log(str);

        


    </script>

-没有 换行 ,不会报错,换行就会报错.

var str = 'a 
          b' ;

        console.log(str);
Uncaught SyntaxError: Invalid or unexpected token
未知语法错误 : 无效  意料之外的象征 

8.模版字符串 保持格式 Keep Format 标签的换行 是很方便的

变量表达式解析: '${1+1}'

var str = `

<ul>
    <li>

    </li>
</ul>
    <h1>${1+2}</h1>
        `;
        console.log(str);

浏览器解析

<ul>
    <li>

    </li>
</ul>
    <h1>3</h1>

它不支持语句,只支持表达式

函数调用时函数表达式调用,是被支持的,例如Math.random()

        var str = `

<ul>
    <li>

    </li>
</ul>
    <h1>${Math.random()}</h1>
        `;
        console.log(str);

它是不支持语句的,例如for var 这种类型的

var greeting = `  

        \`Hello\` World `

        console.log(greeting);




        `Hello` World 

在模版字符串中,如果使用反引号,需要用反斜杠 转义


<ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ul>
var r = (`
            <ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ul>



            `.trim()  ) ;

        console.log(r);

模版字符串课一互相嵌套

const tmpl = addrs => `
  <table>
  ${addrs.map(addr => `
    <tr><td>${addr.first}</td></tr>
    <tr><td>${addr.last}</td></tr>
  `).join('')}
  </table>
`;

9. 数值的扩展

-浏览器 原先只支持8.10进制 现在支持 很多 (2.8.10.18)二进制 是2进1

10.数组扩展

11.对象扩展

-简洁表示法
-JS中对象的属性名只能是 字符串

12.迭代

-迭代协议
-迭代器
-迭代对象
-迭代语句
-for in     ~   for of 
-iterable 可迭代的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 内置函数Python解释器内置了许多功能和类型,总是可用的。他们是按字母顺序列在这里。 abs(x)返回一个数的绝...
    uangianlap阅读 1,236评论 0 0
  • 这一年,我们仍然挥汗如雨,兢兢业业,守在各自的生产车间,我们忙忙碌碌,在城市的各大写字楼里,我们带着惺忪睡眼,凌晨...
    小小绿儿阅读 676评论 0 7
  • 今日体验:今天在家迷迷糊糊的睡了整整一个上午 感觉很久都没有睡的这么爽过 核心:适当休息放松一下 转身用:什么时候...
    京心达康康阅读 48评论 0 0
  • 足球大赛 一天,在文化路一小的操场上举行足球比赛,红队和蓝队对决。比赛一开始,蓝队很容易的就得到了一分。...
    江锦浩阅读 158评论 0 0
  • 遥遥无期,备受打击,急需安慰(╥╯﹏╰╥)ง
    王子貓阅读 239评论 0 1