ES6 一些常用使用

摘要:
`; 30//用于单独处理输入内容,或者相应地转换大数字31functionkitchen{32//string是一个包含模板字符串中已知字符串的数组,并且它还具有一个原始属性,该属性包含自己输入的原始内容33//console.log;34//console.log;35letresult=“”;36for{37result+=strings[i];38result+=values[i];39}40result+=string[strings.length-1];41控制台日志;42} 43//5. 判断字符串是否包含其他字符串,并且返回值都是布尔值44//字符串的新方法:startsWith()是否基于一个新方法来开始一个45//字符串:endsWith)是否以一个新的方法来结束46//字符串:是否includes()包含47个letfruit='apple',48个drink='ofee',49个des甜点='ake';50let早餐=`今天的早餐包括${水果}、${饮料}和${甜点}!
  1 //1、解构数组
  2         let arr1 = ['apple', 'coffee', 'cake'];
  3         let [fruit, drink, dessert] = arr1;
  4         console.log(fruit, drink, dessert);
  5         //2、解构对象
  6         let obj = {
  7             fruit: 'apple',
  8             drink: 'coffee',
  9             dessert: 'cake'
 10         };
 11         // 此键值对前面是对象中定义的属性,后面是定义的变量
 12         let {
 13             fruit: fruit1,
 14             drink: drink1,
 15             dessert: dessert1
 16         } = obj;
 17         console.log(fruit1, drink1, dessert1);
 18         // 3、模版字符串,可以自由的使用换行符
 19         let drink = 'coffee',
 20             fruit = 'apple',
 21             dessert = 'cake';
 22         let breakfast = `今天的早餐是 ${drink} 、
 23             ${fruit}和${dessert}`;
 24         console.log(breakfast);
 25         // 4、带标签的模版字符串
 26         let fruit = 'apple',
 27             drink = 'coffee',
 28             dessert = 'cake';
 29         let breakfast = kitchen`今天的早餐是
 ${fruit}、${drink}和${dessert}!`;
 30         // 用于对输入的内容的单独处理,例如在货币前面加上货币符号,或者对很大的数字进行相应的转换
 31         function kitchen(strings, ...values) {
 32             // stings 是个数组,包含的是摸板字符串中的已知字符串,他还有个 raw 属性包含的是 本身输入的原内容
 33             // console.log(strings);
 34             // console.log(values);
 35             let result = '';
 36             for (let i =0,len = values.length;i<len;i++) {
 37                 result += strings[i];
 38                 result += values[i];
 39             }
 40             result += strings[strings.length - 1];
 41             console.log(result);
 42         }
 43         // 5、判断字符串是否包含其他字符串,返回值均为布尔值
 44         // 字符串的新方法:startsWith() 是否是以...为开始
 45         // 字符串的新方法:endsWith() 是否是以...为结束
 46         // 字符串的新方法:includes() 是否是包含...
 47         let fruit = 'apple',
 48             drink = 'coofee',
 49             dessert = 'cake';
 50         let breakfast = `今天的早餐有${fruit}、${drink}、${dessert}!`;
 51         console.log(breakfast.startsWith('今天'));
 52         console.log(breakfast.endsWith('cake!'));
 53         console.log(breakfast.includes('tea'));
 54         // 6、函数的默认参数 Default Parameter Values
 55         function breakfast(dessert = 'cake', drink = 'coffee') {
 56             return `${dessert} ${drink}`;
 57         }
 58         console.log(breakfast());
 59         console.log(breakfast('icecream', 'beer'));
 60         // 7、展开操作符 spread
 61         let foods = ['cake', 'coffee'],
 62             fruit = 'apple';
 63         console.log(...foods);
 64         console.log(foods.join(' '));
 65         let allFoods = ['apple', ...foods];
 66         console.log(allFoods);
 67         // 8、剩余操作符 rest
 68         function breakfast(dessert, drink, ...foods) {
 69             // 除了dessert和drink之外剩下的传入的参数为被包含到 foods 数组里
 70             console.log(dessert, drink, foods);
 71         }
 72         breakfast('cake', 'coffee', 'tea', 'banana');
 73         // 9、解构参数
 74         function breakfast(dessert, drink, {location, name}={}) {
 75             console.log(dessert, drink, location, name);
 76         }
 77         breakfast('cake', 'cooffee', {location:'beijing', name:'cahtrine'});
 78         // 10、函数的名字 function 的 name 属性
 79         function breakfast() {}
 80         console.log(breakfast.name);
 81         let letBreakfast = function (){};
 82         console.log(letBreakfast.name);
 83         let newletBreakfast = function superBreakfast(){};
 84         console.log(newletBreakfast.name);
 85         // 11、箭头函数 arrow function
 86          //如果函数体只有一条return语句,可以简写成如下形式,该函数的返回值是 dessert
 87         let breakfast = dessert => dessert;
 88         // 等价于
 89         var breakfast = function breakfast(dessert) {
 90             return dessert;
 91         }
 92         //如果函数只有一个参数,则参数的括号可以省略;如果没有参数,则需要用空括号
 93         let drink = (Parameter1,Parameter2) => {
 94             //函数体 
 95         }
 96         // 12、对象表达式
 97         let dessert = 'cake',drink = 'coffee';
 98         let foods = {
 99             dessert,
100             drink,
101             breakfast() {}
102         }
103         // 13、对象的可计算属性名
104         let food = {};
105         let drink = 'hot drink';
106         food[drink] = 'coffee';
107         console.log(food);
108         // 14、对比两个值是否相等 Object.is(Parameter1,Parameter2)
109         console.log(+0 === -0);
110         console.log(NaN == NaN);
111         console.log(Object.is(+0, -0));
112         console.log(Object.is(NaN, NaN));
113         // 15、把对象复制到另一个对象里 Object.assign
114         let breakfast = {},
115             drink = {
116                 drink: 'beer'
117             }
118         Object.assign(breakfast, drink);
119         drink.drink = 'coofee';
120         console.log(breakfast);
121         console.log(drink);
122         // 16、设置对象的 prototype,Object.setPrototypeOf()
123         let breakfast = {
124             getdrink() {
125                 return 'coffee';
126             }
127         };
128         let dinner = {
129             getdrink() {
130                 return 'tea';
131             }
132         };
133         let drink = Object.create(breakfast);
134         console.log(drink);
135         console.log(drink.getdrink());
136         console.log(Object.getPrototypeOf(drink) === breakfast);
137         Object.setPrototypeOf(drink, dinner);
138         console.log(drink.getdrink());
139         console.log(Object.getPrototypeOf(drink) === dinner);
140         // 17、可以直接设置对象的 __proto__
141         let breakfast = {
142             getdrink() {
143                 return 'coffee';
144             }
145         };
146         let dinner = {
147             getdrink() {
148                 return 'tea';
149             }
150         };
151         let drink = {
152             __proto__: breakfast
153         };
154         console.log(drink);
155         console.log(drink.getdrink());
156         console.log(Object.getPrototypeOf(drink) === breakfast);
157         drink.__proto__ = dinner;
158         console.log(drink);
159         console.log(drink.getdrink());
160         console.log(Object.getPrototypeOf(drink) === dinner);
161         // 18、super
162         let breakfast = {
163             getdrink() {
164                 return 'coffee';
165             }
166         };
167         let sunday = {
168             __proto__: breakfast,
169             getdrink() {
170                 return super.getdrink() + ' && milk';
171             }
172         };
173         console.log(sunday.getdrink());
174         // 19、手动创建迭代器 iterators
175         // 迭代器特征:1、每次执行都会返回一个对像{value:value,done:true/false}
176         // 迭代器特征:2、next 方法,每次执行它返回 1 中的对象
177         // 在ES6 中 Generators 能够生成上述迭代器
178         function chef(foods) {
179             let i = 0;
180             return {
181                 next() {
182                     let done = i >= foods.length? true : false;
183                     let value = !done? foods[i++] : undefined
184                     return {
185                         value: value,
186                         done: done
187                     }
188                 }
189             }
190         }
191         let me = chef(['coffee', 'tea']);
192         console.log(me.next());
193         console.log(me.next());
194         console.log(me.next());
195         // 20、生成器 Generators
196         function* chef(foods) {
197             for(let i = 0,len = foods.length;i<len;i++) {
198                 yield foods[i];
199             }
200         }
201         let me = chef(['coffee', 'tea']);
202         console.log(me.next());
203         console.log(me.next());
204         console.log(me.next());
205         // 21、classes 类
206          class chef {
207              constructor(foods) {
208                 //  类的初始值设置
209                 this.foods = foods;
210              }
211              cook() {
212                  console.log(this.foods);
213              }
214          }
215          let me = new chef('egg');
216          me.cook();
217         // 22、get 和 set 
218         class chef {
219             constructor(foods) {
220                 this.foods = foods;
221                 this.dish = [];
222             }
223             get menu() {
224                 return this.dish;
225             }
226             set menu(food) {
227                 this.dish.push(food);
228             }
229             cook() {
230                 console.log(this.foods);
231             }
232         }
233         let me = new chef('egg');
234         me.menu = '七分熟的牛排';
235         me.menu = '西红柿炒鸡蛋';
236         console.log(me.menu);
237         // 23、类的静态方法 static,不需要实例化类,能够直接使用的方法
238         class chef {
239             static cook(food) {
240                 console.log(food);
241             }
242         }
243         chef.cook('egg');
244         // 24、继承 extends
245         class Person {
246             constructor(name, birthday) {
247                 this.name = name;
248                 this.birthday = birthday;
249             }
250             confir() {
251                 console.log(`${this.name} ${this.birthday}`);
252                 console.log(1);
253             }
254         }
255         class Chef extends Person {
256             constructor(name, birthday) {
257                 super(name, birthday);
258             }
259         }
260         let me = new Chef('章三', '2016-01-01');
261         me.confir();
262         // 25、Set 元素不可重合,接收一个数组
263         let drinks = new Set(['coffee','tea','bear']);
264         // 添加 add
265         drinks.add('colar');
266         // Set不能有重复的项
267         drinks.add('coffee');
268         console.log(drinks);
269         // 删除 delete
270         drinks.delete('coffee');
271         console.log(drinks);
272         // 查看是否有 has
273         console.log(drinks.has('colar'));
274         // 查看有几项 size
275         console.log(drinks.size);
276         // 循环处理 forEach
277         drinks.forEach(food => {
278             console.log(food);
279         });
280         // 清空 clear
281         drinks.clear();
282         console.log(drinks);
283         // 26、Map 对对象的扩展,使对象的key 可以是任何一个值
284         let food = new Map();
285         let fruit = {}, cook = function(){}, dessert = '甜点';
286         // 添加 set
287         food.set(fruit, 'apple');
288         food.set(cook, '西红柿炒鸡蛋');
289         food.set(dessert, 'cake');
290         console.log(food);
291         // 查看键对应的值 get
292         console.log(food.get(fruit));
293         console.log(food.get(function(){}));
294         // 查看有几项 size
295         console.log(food.size);
296         // 删除 delete
297         food.delete(fruit);
298         // 是否有 has
299         console.log(food.has(fruit));
300         // 循环处理 forEach
301         food.forEach((value, key) => {
302             console.log(`${key} = ${value}`);
303         })
304         // 27、Object.keys()、Object.values() 获取对象的所有键/值
305         const people= {
306             name: 'zhangsan',
307             sex: 'girl',
308             age: '22'
309         }
310         console.log(Object.keys(people));
311         console.log(Object.values(people));
312         // 实现数组去重
313         let arr = [1,2,2,1,4,5,7];
314         let obj = {};
315         arr.forEach(v => obj[v]=1);
316         console.log(Object.keys(obj));
317         // 28、Object.entries() 将键值对换成数组
318         const people= {
319             name: 'zhangsan',
320             sex: 'girl',
321             age: '22'
322         }
323         console.log(Object.entries(people));
324         // 29、... 扩展运算符
325         // 使用 ... 扩展符合并两个对象
326         const peop1 = {name:'zhangsan', age:22};
327         const peop2 = {name: 'lisi', sex: 'girl'};
328         console.log({...peop1, ...peop2, date:'2018-0101'});
329         // 数组去重
330         let arr = [1,2,2,1,4,5,7];
331         let newArr = [...new Set(arr)];
332         console.log(newArr);
333         // 30、ES6 的模块化
334         // -------1.js-------------------------
335         export const name='123'; // 暴露一个模块的内容
336         exprot const fun = ()=>{console.log("hello")};
337         // -------2.js-------------------------
338         import {name, fun} from './1.js';//引入一个模块
339         31、default
340         // -------1.js-------------------------
341         exprot default const test = ()=>{console.log('world')};
342         // -------2.js-------------------------
343         import abc form './1.js';
344         abc(); //执行1.js中的 test方法
345         32、模块化,用别名方式引用
346         // -------1.js-------------------------
347         export const name='123'; // 暴露一个模块的内容
348         exprot const fun = ()=>{console.log("hello")};
349         exprot default const test = ()=>{console.log('world')};
350         // -------2.js-------------------------
351         import * as mod1 from './1.js'
352         console.log(mod1);
353         // mod1 是个对象,包含了 1.js 中所有暴露的内容
354         // 33、Array.from 从一个类似数组或者一个可迭代对象中创建一个新的数组实例
355         console.log(Array.from({
356             0:'zhangsan',
357             1:'lisi',
358             2:'wangwu',
359             length:3
360         }));
361         // 实现数组去重
362         var arr = [1,2,2,1,4,5,7];
363         let newarrfun = (arr)=>{
364             return Array.from(new Set(arr));
365         }
366         console.log(new Set(arr));
367         console.log(newarrfun(arr));
368         // // 第二个参数是新数组每一项执行的回调函数--可选
369         let doubleArr = (arr) => {
370             return Array.from(new Set(arr), v => v*2)
371         }
372         console.log(doubleArr(arr));
373         // 第三个参数是执行回调函数时指定的 this 对象--可选

免责声明:文章转载自《ES6 一些常用使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android的string-array数据源简单使用用video标签流式加载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

LoadRunner参数数组

参数数组提供了对一类参数集中存放的机制,其中LR内置的几个函数有:lr_paramarr_idx()、lr_paramarr_len()、lr_paramarr_random() 同时参数数组必须满足一下两个条件:①参数必须都是以相同的名字开头的,后接下划线加数字的方式顺序赋值;②参数数组必须要有一个“参数名_count”的参数来记录数字的长度。 eg:...

[C++ STL] vector使用详解

一、概述 vector(向量): 是一种序列式容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组(动态数组),它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。 二、定义及初始化 使用之前必须加相应容器的头文件: #...

一篇文章教会你创建vue项目和使用vue.js实现数据增删改查

【一、项目背景】 在管理员的一些后台页面里,数据列表中都会对这些数据进行增删改查的操作,例如管理员添加商品、修改商品价格、删除商品、查询商品,我们应该关注这些数据的操作和处理。 【二、项目目标】 主要有以下5个目标: 1、如何创建vue项目。 2、数据添加方法:获取到id和name在data上面获取,组织一个对象,把对象通过数组的相关方法,添加到当前dat...

ExtJs4 笔记(4) Ext.XTemplate 模板

ExtJs4 笔记(4) Ext.XTemplate 模板摘自:http://www.cnblogs.com/lipan/ 本篇将涉及到ExtJs中一个重要的概念,模板。话说Razor很神奇,但是我个人不是很喜欢那种html混编C#的方式,仿佛又回到了asp的时 代。ExtJs的模板同样也可以组织生成灵活的html,而且代码和html有效的分离。本文将细细...

ES6中的函数、对象定义

ES6之前的函数定义: 通过声明通过关键词 function 定义 ,这是最早也是最经典的function定义方式。function hello (firstname) {return `Hello ${firstname}`;} 这个函数有一个名称 "hello", 所以我们称这个函数为命名函数。 通过表达式这是比较现代化的定义方式了。这种定义方式也说明...

es6常用方法

一、let 和 constlet 声明变量,只在所在的块区有效,不存在变量提升;var 存在变 量提升const 声明常量,只在所在块区有效 二、变量的解构赋值1.数组的解构赋值let [a, b, c] = [1, 2, 3];// a=1;b=2;c=3 2.对象的解构赋值let { foo, bar } = { foo: "aaa", bar: "b...