es6新增属性和方法
来源:互联网 发布:五毒成男捏脸数据 编辑:程序博客网 时间:2024/05/16 14:50
首先要说let,他是只在代码块中执行的变量,例如:
{
let a= 10;
var b= 1;
}
console.log(a);//defined
console.log(b);//1
面试题系列咱们说过,闭包的经典应用是在循环的时候:
var a= [];
for (vari = 0; i <10; i++) {
a[i] =function () {
console.log(i);
};
}
a[6]();// 10
这样是得不出你想要的结果的,以前只有利用闭包,但是现在我们有了let:
var a= [];
for (leti = 0; i <10; i++) {
a[i] =function () {
console.log(i);
};
}
a[6]();// 6
我们发现它神奇的执行了。另外let不允许重复声明,它主要就是应用在函数内部的块级作用域。另外还新增const只读常量,一旦声明就无法改变,作用域和let一样。
For...of循环:
let iterable= [10, 20, 30];
for (constvalue of iterable) {
console.log(value);
}
我们不仅可以这样用它来循环数组,甚至能用它来循环字符串。
let iterable= "boo";
for (letvalue of iterable) {
console.log(value);
}
// "b"
// "o"
// "o"
新增字符串遍历的三个方法,以前我们只有indexOf这个方法来来判定一个字符串,是否含在另外一个字符串中,它返回字符串首次出现的位置,这显然不能满足我们。
所以es6新增includes:返回布尔值,表示是否找到字符串。startsWith:返回布尔值,表示字符串是否在源字符串的头部位置。endsWith:返回布尔值,表示参数字符串是否在源字符串尾部。
var s= 'Hello world!';
s.startsWith('Hello')// true
s.endsWith('!')// true
s.includes('o')// true
三个方法都支持第二个参数,表示开始搜索的位置。
var s= 'Hello world!';
s.startsWith('world',6) // true
s.endsWith('Hello',5) // true
s.includes('Hello',6) // false
字符串操作新增repeat方法,返回一个新字符串,表示将源字符串重复多少次。
'x'.repeat(3)// "xxx"
'hello'.repeat(2)// "hellohello"
'na'.repeat(0)// ""
字符串操作里面最麻烦的莫过于拼接字符串,为解决这个问题ec6提供了模板字符串解决方案。
$('#result').append(
'There are <b>' + basket.count +'</b> ' +
'items in your basket, ' +
'<em>' + basket.onSale +
'</em> are on sale!'
);
以前我们是这么写的,现在我们只需要这么写:
$('#result').append(`
There are <b>${basket.count}</b> items
in your basket, <em>${basket.onSale}</em>
are on sale!
`);
记住开头结尾要加上反引号。模板中嵌入变量需要写在${}中。
Ec6里面终于新增了类的方法。以前我们我们是这么写构造函数的:
function Point(x, y) {
this.x= x;
this.y= y;
}
Point.prototype.toString= function () {
return '('+ this.x+ ', ' +this.y+ ')';
};
var p= new Point(1,2);
而现在有了类之后:
//定义类
class Point {
constructor(x, y) {
this.x= x;
this.y= y;
}
toString() {
return '('+ this.x+ ', ' +this.y+ ')';
}
}
注意方法之间不要加逗号,否则会报错。
使用的时候我们直接new就可以了。
class Bar {
doStuff() {
console.log('stuff');
}
}
var b= new Bar();
b.doStuff()// "stuff"
是不是简单方便了好多!其实类里面的方法,就等同于它的原型下面的方法。
class Point {
constructor(){
// ...
}
toString(){
// ...
}
toValue(){
// ...
}
}
// 等同于
Point.prototype = {
toString(){},
toValue(){}
};
只提了一部分,明天继续。
更多请关注公众号:FE学习笔记
- es6新增属性和方法
- es6新增属性学习
- ES6---string新增方法
- ES6新增属性笔记一
- ES6---数组array新增方法
- ECMAScript5 Object新增的属性和方法
- ES6数组新增的几个方法
- es6新增的数组去重方法
- ES6学习笔记(ES6新增的数组方法)
- ES6 类(Class)基本用法和静态属性+方法详解
- ES6 类(Class)基本用法和静态属性方法详解
- es6 新增的map和foreach
- es6 新增的map和foreach
- es6 javascript的class的静态方法、属性和实例属性
- HTML5新增元素和属性
- html5新增标签和属性
- es6 javascript的字符串对象新增团员方法
- es6 Array数组对象新增方法 Array.of()
- VR开发中HTC手柄射线拾物方法
- 将Oracle数据的的字符集修改为utf-8
- sql语句优化
- BloomFilter——大规模数据处理利器
- supervessel-免费云镜像
- es6新增属性和方法
- Spring 注解中,普通类获取@Service标记的方法 或者bean对象
- AndoridStudio快捷键
- windows平台qt下编译opencv
- 11. Container With Most Water
- gulp--自动化构建工具学习笔记
- 分布式计算开源框架Hadoop入门实践(二)
- docker 常用命令
- 如何使输入框input只能输入数字