##学习ReactNative笔记二 __ECMAScript新功能 ####★★★笔记时间- 2017-1-10 ★★★数组
###请教一个问题:第30和31的时候在导入使用import
的时候总 是报错,不明白是哪里的问题,请你们帮我解决一下,谢谢。函数
###ES5使用了:Bable,JSPM ###1.块的做用域:之前有全局做用域和函数做用域,如今还有一个块级做用域;let ###工具:Atom的插件使用工具
做用域:就是一个变量的有效范围学习
if (true){ // var fruit = '霜'; //这里是全局均可以访问 let fruit = '震';//let 定义的变量,只能在这个块里面使用它。这就是块做用域,只能在这个块中进行访问,外部是不能访问的;会报错 } console.log(fruit);
###2. 恒量:const
不能从新的进行赋值;限制的是给恒量分配值的动做,并非限制恒量里面的那个值ui
'use strict'; const fruit = 'AA';//定义一个恒量,使用const // fruit.push("A"); console.log(fruit); const fruit = 'BB'; console.log(fruit);
####报错:this
script.js:7 Uncaught SyntaxError: Identifier 'fruit' has already been declared
'use strict'; const fruit = []; fruit.push('A'); fruit.push('B'); console.log(fruit);
'use strict'; const fruit = []; fruit.push('A'); fruit.push('B'); const fruit = []; console.log(fruit);
####报错:prototype
ncaught SyntaxError: Identifier 'fruit' has already been declared
###3.解构数组:Array Destructuring插件
'use strict'; function brakfast(){ return ['A', 'B', 'C']; } var tmp = brakfast(), desset = tmp[0], drink = tmp[1], fruit = tmp[2]; // let [desset, drink, fruit] = brakfast(); console.log(desset, drink, fruit);//这里会报错
###4.解构对象:Object Destructuringrest
'use strict'; function brakfast(){ return {dessert: 'A', drink: 'B', fruit:'C'}; } let {dessert: dessert, drink: drink, fruit: fruit} = brakfast(); console.log(dessert, drink, fruit);
###5.模板字符串:Template Stringcode
字符串拼接:
'use strict'; let dessert = 'A', drink = 'B'; let breakFast = '今天的早餐是' + dessert + drink; console.log(breakFast);
另外一种写法:
'use strict'; let dessert = 'A', drink = 'B'; let breakFast = `今天的早餐是${dessert}与${drink}`; console.log(breakFast);
###6.带标签的字符串模板:Tagged Templates 标签就是一个函数:
'use strict'; let dessert = 'A', drink = 'B'; let breakFast = kitchen`今天的早餐是${dessert}与${drink}`; function kitchen(strings, ...values){ console.log(strings); console.log(values); }
'use strict'; let dessert = 'A', drink = 'B'; let breakFast = kitchen`今天的早餐是\n${dessert}与${drink}`; function kitchen(strings, ...values){ // console.log(strings); // console.log(values); let result = ''; for(var i = 0; i < values.length; i++){ result += strings[i]; result += values[i]; } result += strings[strings.length - 1]; return result; } console.log(breakFast);
###7.判断字符串是否包含某个其它字符串
7.1 判断字符串是不是某个字符串开头:
startsWith('条件字符串')
返回值:true,false'use strict';
let dessert = 'A', drink = 'B';
let breakFast =
今天的早餐是 \n ${dessert} 与 ${drink}
;
console.log( breakFast.startsWith('!') );
7.2 判断字符串结尾使用:
endsWith('条件字符串')
,返回值为:true, false'use strict';
let dessert = 'A', drink = 'B';
let breakFast =
今天的早餐是 \n ${dessert} 与 ${drink}
;
console.log( breakFast.endsWith('?') );
7.3 包含某个字符串:`includes()`返回值为:true, false'use strict';
let dessert = 'A', drink = 'B';
let breakFast =
今天的早餐是 \n ${dessert} 与 ${drink}!
;
console.log( breakFast.includes('!') );
###8. 默认参数
'use strict'; function breakFast (dessert = 'AA', drink = 'BB'){ return `${dessert} ${drink}`; } console.log( breakFast('CC','DD') );
###9.展开操做符:Spread: ...
有点相似数组的拼接
'use strict'; let fruits = ['AA','BB'], foods = ['CC',...fruits]; console.log(fruits); console.log(...fruits); console.log(foods);
###10.剩余操做符:Rest
'use strict'; function breakFast (dessert, drink, ...foods){ console.log(dessert, drink, foods);//输出带有数组的信息 // console.log(dessert, drink, ...foods);//输出全部的内容,不带数组 } breakFast('PP','NN','MM', 'ZZ');
###11.解构参数:Destrucred Parameters 第三参数:能够是对象
'use strict'; function breakFast (dessert, drink, {location, restaurant}){ console.log(dessert, drink, location, restaurant); } breakFast('AA', 'BB', {location: '同东', restaurant: '小明'})
###12.函数的名字:name属性
'use strict'; function breakFast(argument){ } console.log( breakFast.name );
'use strict'; let breakfast = function superBreakfast (argument){ } console.log( breakfast.name );
###13.箭头函数
'use strict'; //左边的变量能够做为函数的名字,右边是函数能够接收的参数; desset(参数) => desserts(函数的返回值) let breakfast = (dessert, drink) => dessert + drink;
###14.对象表达式
方式一:
'use strict'; let dessert = 'AA', drink = 'BB'; let food = { dessert: dessert, drink: drink, }; console.log(food);
方式二:
'use strict'; let dessert = 'AA', drink = 'BB'; let food = { dessert, drink, }; console.log(food);
方式三:
'use strict'; let dessert = 'AA', drink = 'BB'; let food = { dessert, drink, breakfast(){} }; console.log(food);
###15.对象属性名 15.1 属性中不能包括:空格
'use strict'; let food = {}; food.dessert = 'BB'; food.hot drink = 'CC'; console.log(food);
15.2 添加带空格的属性名字:
'use strict'; let food = {}; food.dessert = 'BB'; // food.hot drink = 'CC';//这句话是错误的 food[`hot drink`] = 'CC'; console.log(food);
'use strict'; let food = {}; let drinks = `hot drinks`; food.dessert = 'BB'; // food.hot drink = 'CC';//这句话是错误的 // food[`hot drink`] = 'CC'; food[drinks] = 'CC'; console.log(food);
###16.对比两个值是否相等:Object.is(a,b)
两个参数就是须要对比的东西
###17.把一个对象的值复制到另外一个对象里:Object.assign()
'use strict'; let breakfast = {}; Object.assign( breakfast,//须要复制到的对象 {drink: 'AA'}//须要复制对象的内容 ); console.log(breakfast);
###18 设置对象的prototype: Object.setPrototypeOf()
建立对象之后去改变prototype
'use strict'; let breakfast = { getDrink() { return 'AAA'; } }; let dinner = { getDrink(){ return 'BBB'; } }; let sunday = Object.create(breakfast); console.log(sunday.getDrink()); console.log(Object.getPrototypeOf(sunday) == breakfast); // Object.setPrototypeOf(须要设置的这个对象,设置成的对象) Object.setPrototypeOf(sunday, dinner); console.log(sunday.getDrink()); console.log(Object.getPrototypeOf(sunday) == dinner);
###19.__proto__
'use strict'; let breakfast = { getDrink() { return 'AAA'; } }; let dinner = { getDrink(){ return 'BBB'; } }; let sunday = { __proto__: breakfast }; console.log(sunday.getDrink()); console.log(Object.getPrototypeOf(sunday) == breakfast); sunday.__proto__ = dinner; console.log(sunday.getDrink()); console.log(Object.getPrototypeOf(sunday) == dinner);
###20.super
'use strict'; let breakfast = { getDrink() { return 'AAA'; } }; let dinner = { getDrink(){ return 'BBB'; } }; let sunday = { __proto__: breakfast, getDrinkP(){ return super.getDrink() + `marlonxlj`; } }; console.log(sunday.getDrinkP());
###21.迭代器:Itertors
返回一个对象{value: xx, done: true/false}
还有一个next方法 生成迭代器:Generators
'use strict'; function chef(foods){ let i = 0; return { next(){ let done = (i >= foods.length); let value = !done ? foods[i++] : undefined; return { value: value, done: done } } } } let marlonxlj = chef(['AA', 'BB']); console.log(marlonxlj.next()); console.log(marlonxlj.next()); // console.log(marlonxlj.next());
###22.生成器:Generators
'use strict'; //生成器的名字 // function* chef(){ // yield 'AA'; // yield 'BB'; // } //带参数 // function* chef(foods){ // for(var i = 0; i < foods.length; i++){ // yield foods[i]; // } // } //使用函数表达式 let chef = function* (foods){ for(var i = 0; i < foods.length; i++){ yield foods[i]; } } //生成迭代器 let marlonxlj = chef(['AA', 'BB', 'CC']); console.log(marlonxlj.next()); console.log(marlonxlj.next()); console.log(marlonxlj.next()); console.log(marlonxlj.next());
###23.类:Class
'use strict'; class Chef { constructor(food){ this.food = food; } cook() { console.log(this.food); } } let marlonxlj = new Chef('marlonxljPP'); marlonxlj.cook()
###24.get与set
'use strict'; class Chef { constructor(food){ this.food = food; this.dish = []; } get menu(){ return this.dish; } set menu(dish){ this.dish.push(dish); } cook() { console.log(this.food); } } let marlonxlj = new Chef(); console.log(marlonxlj.menu = 'Hello'); console.log(marlonxlj.menu = 'world'); console.log(marlonxlj.menu);
###25.静态方法:static
'use strict'; class Chef { constructor(food){ this.food = food; this.dish = []; } get menu(){ return this.dish; } set menu(dish){ this.dish.push(dish); } //修改cook方法 static cook(food) { console.log(food); } } Chef.cook('marlonxlj');
###26.继承:extends
'use strict'; class Person { constructor(name, birthday){ this.name = name; this.birthday = birthday; } intro() { return `${this.name}, ${this.birthday}`; } } class Chef extends Person { constructor (name, birthday) { super(name, birthday); } } //建立一个类 let marlonxlj = new Chef('marlonxlj', '2014'); console.log(marlonxlj.intro());
###27. Set 里面不能有重复的内容
'use strict'; let dessets = new Set('ABVX'); dessets.add('marlonxlj'); dessets.add('A'); console.log(dessets); //查看有多少个元素 console.log(dessets.size); //查看是否是有这个‘marlonxlj’ console.log(dessets.has('marlonxlj')); //删除marlonxlj dessets.delete('marlonxlj'); console.log(dessets); //循环处理 dessets.forEach(dessets => { console.log(dessets); }); //清除 dessets.clear(); console.log(dessets);
###29.map
'use strict'; let food = new Map(); let fruit = {}, cook = function() {}, dessert = 'marlonxlj'; //往map里面添加map的key //2个参数:第一个是:key,项目的名字;第二个是value: food.set(fruit, 'AA'); food.set(cook, 'BB'); food.set(dessert, 'CC'); console.log(food); //项目里面有多个 console.log(food.size); //获得它的值 console.log(food.get(cook)); //删除map里面的项目 food.delete(dessert) //判断是否包含这个derrsert console.log(food.has(dessert)); //循环处理map里面的东西 food.forEach((value, key) => { console.log(`${key} = ${value}`); }); //清除 food.clear(); console.log(food);
###30.重命名导出导入的东西
script.js
'use strict'; import {fruit, dessert, super as dinner} from './chef.js';//可是在运行是这句话老是有错???求解啊 console.log(chef.fruit, chef.dessert);
chef.js
'use strict'; let fruit = 'AA'; let dessert = 'BB'; function dinner(fruit, dessert){ console.log(`今天的晚餐是: ${fruit} 与 ${dessert}`); } export {fruit, dessert, dinner as upper};
###31.默认导出与导入
chef.js
'use strict'; let fruit = 'AA'; let dessert = 'BB'; //export default默认要导出的模块 //一种写法 // export default function dinner(fruit, dessert){ // console.log(`今天的晚餐是: ${fruit} 与 ${dessert}`); // } // // 另外一种写法 function dinner(fruit, dessert){ console.log(`今天的晚餐是: ${fruit} 与 ${dessert}`); } export {dinner as default};
script.js
'use strict'; // import {fruit, dessert, super as dinner} from './chef.js'; import dinner from './chef.js' // inclode [fruit, dessert, super as dinner] from './chef.js'; dinner('AA','BB');
####🐼🐶🐶若是对你有帮助,或以为能够。请右上角star一下,这是对我一种鼓励,让我知道我写的东西有人承认,我才会后续不断的进行完善。
###有任何问题或建议请及时issues me,以便我能更快的进行更新修复。
####Email: marlonxlj@163.com