从es5之后,js被各种人玩烂了之后,不得不提起的性能摆在台面上。可能是这些原因,js把底层的一些更深层的东西都开放出来了。1.遍历器 iterator在了解这个东西之前,需要先了解一下计算机对内存的处理。原文:http://www.cnblogs.com/xiongmaoblog/p/7722977.html
这节学习ES6中对函数新增的方法和属性。1.新增函数的参数默认值参考S6系列第二篇:http://www.cnblogs.com/diweikang/p/8976854.html2.新增了函数的rest参数参考ES6系列第二篇:http://www.cnblogs.com/diweikang/p/8976854.html3.length属性 作用:获取函数预期传入的参数个数。 指定默认值后,length属性将返回没有指定默认值参数的个数。 (function (a) {}).length // 1(function (a = 5) {}).length // 0(function (a...
function sendAjax({type="get",url="",data=null,dataType="json"}) {// 该函数的作用就是返回一个改变了状态的(成功或失败)的promise实例对象return new Promise((reslove, reject) => {$.ajax({type,url,data,dataType,success: function (response) {reslove(response)},error(err) {reject(err)}});})}// 函数的调用:
sendAjax({url:"http://cj.shenzhou888.com.cn/hb_vote/api.php?action=area&id=0"})
.then((data) => {...
构造函数生成的对象叫做实例化对象,它与普通函数是有许多区别的,比如:构造函数的命名使用大驼峰命名法;构造函数必须搭配关键词new构造函数有自己定义属性和方法的语法。在构造函数中,使用this调用公有属性,这里的this指向是实例化对象;方法一般被定义在函数的prototype属性中是为了让使用同一构造函数生成的实例化对象都是相同方法。下面用一段简单的代码来演示下构造函数:<script> function CrtObj(name,age,sex){...
1、async 函数是 Generator 函数的语法糖。一个 Generator 函数,依次读取两个文件。var fs = require(‘fs‘);var readFile = function (fileName) {return new Promise(function (resolve, reject) {fs.readFile(fileName, function(error, data) {if (error) reject(error);resolve(data);});});
};var gen = function* () {var f1 = yield readFile(‘/etc/fstab‘);var f2 = yield readFile(‘/etc/shells‘);console.log(f1....
讲真,自从出了箭头函数之后,再也不用担心 this 问题了,而且就简化代码这一方面来说,箭头函数可谓是装逼神器。箭头函数有几点需要注意,如果 return 值就只有一行表达式,可以省去 return,默认表示该行是返回值,否则需要加一个大括号和 return。如果参数只有一个,也可以省去括号,两个则需要加上括号。比如下面的例子:var f = v => v*2;
// 等价于var f = function(v){return v*2;
}// 判断偶数var isEven = n => n % 2 == ...
1函数参数的默认值基本用法在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。function log(x, y) {y = y || ‘World‘;console.log(x, y);
}log(‘Hello‘) // Hello World
log(‘Hello‘, ‘China‘) // Hello China
log(‘Hello‘, ‘‘) // Hello World上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World。这种写法的缺点在于,如果参数y赋值了,但是对应的布尔值为false,则该赋值不起作用...
【转】ES6箭头函数(Arrow Functions)ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器)。 一、语法1. 具有一个参数的简单函数var single = a => a
single(‘hello, world‘) // ‘hello, world‘
2. 没有参数的需要用在箭头前加上小括号var log = () => {alert(‘no param‘)
}
3. 多个参数需要用到小括号,参数间逗号间隔,例如两个数字相加var add = (a, b) => a + b
add(3, 8) // 11
4. 函数...
es6 generator 的yield理解原文:https://www.cnblogs.com/malong1992/p/12129561.html
箭头函数ES6一个非常有用的新特性,我这里小小的总结一下用法:箭头函数相当于直接return一个值,当没有参数时,可以这么写:var f = () => 0;
// 上面这句话相当于var f = function(){ return 0;}当有一个参数时:var f = num => return num;
// 上面这一句相当于var f = function(num) { return num;}当有两个或以上的参数时,要用括号并用逗号分隔开:var f = (a,b) => a+b;
// 相当于var f = function(a,b) { return a+b;}上面...
ES3 ES5this的指向问题 this指的是该函数被调用的对象 var foo = function () {this.a = ‘a‘,this.b = ‘b‘,this.c = {a: ‘new a‘,b: function () {//new a 此时this指的是该函数被调用的对象return this.a;}}}console.log(new foo().c.b()); //new aES6的箭头函数 箭头函数的this指的是定义时this的指向,b在定义时,this指向的是c被定义时的函数 var foo = function () {this.a = ‘a‘,this.b = ‘b‘,this.c = {a...
todo构造函数: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);console.log(p)
console.log(p.toString)效果等同于function Point(x, y) {this.x = x;this.y = y;this.toString = function () {return ‘(‘ + this.x + ‘, ‘ + this.y + ‘)‘;};
}var p = new Point(1, 2);console.log(p)
console.log(p...
ES6 针对新的语法特性(解构、参数默认值、箭头语句、块级作用域let),对于函数的属性、参数、作用域进行了扩展,并对递归调导致内存栈溢出用进行了优化。
同时ES6规定,只要函数参数使用了默认值、解构赋值、扩展运算符,函数内部都不可以使用严格模式(ES5可以),否则会报错;1. 函数参数默认值ES6之前,函数定义/声名时不能指定默认值;ES6可以在函数定义时进行初始化;同时有以下几点需要注意:参数设置默认值时,参数直接写在默...
1.写法不一样//function
function fn(a,b){
return a+b
}
//arrow function
var foo = (a,b)=>{
return a+b
}
2.this的指向,function中的this可变(window,内部),箭头函数固定不变指向windowfunction foo(){
console.log(this)
}
var obj = {aa:foo}
foo() //window
obj.aa()//objvar foo = ()=>{
console.log(this)
}
var obj = {aa:foo}
foo()//window
obj.aa()//window
3.构造函数function Person(name,age){
this.name =name
...
1、函数的 length 属性ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。function test(x, y = ‘World‘) {console.log(x, y);
}注意:函数的length属性,将返回没有指定默认值的参数个数。如果遇到有默认值的参数 就停止。function test(x, m,y = ‘World‘,z,f) {...
}
console.log(test.length) // 2 遇到默认参数则停止 所以为22、rest参数ES6引入rest参数,用于获取函数的多余参数,这样就不需要使用arguments...