一、函数扩展

1、参数默认值

参数有默认值,后面不可以再加没有默认值的变量。如以下test函数中,不可以加写成

function test(x,y="word",z){

}

function test(x,y="word"){
console.log("默认值",x,y);
}
test("lala"); //lala word
test("lala","你好啊"); //lala 你好啊

2、作用域的问题

//作用域的问题
let x="test";
function test2(x,y=x){
console.log("作用域",x,y);
}
test2("kill"); //kill kill
test2() //undefined undefined
function test3(c,y=x){
console.log("作用域",c,y);
}
test3("kill"); //kill test

  

3、参数问题

...arg后不可再加参数

function test4(...arg){
for(let v of arg){
console.log("rest",v);
}
}
test4(1,2,3,4,"a"); //1,2,3,4,a
console.log("a",...[1,2,3]); //a 1 2 3

4、伪调用  主要用于提升性能

 //伪调用
function trail(x){
console.log("tail",x);
} function fx(x){
return trail(x)
}
fx(123);

  

二、对象扩展  

  1、简洁表示法

 //简洁表示法
let o=1;let k=2;
let es5={
o:o,
K:k
};
let es6={
o,k
}
console.log(es5,es6); let es5_method={
hello:function(){
console.log("11hello");
}
}
let es6_methods={
hello(){
console.log("22hello")
}
} console.log(es5_method.hello(),es6_methods.hello());

2、属性表达式

//属性表达式
let a="b";
let es5_obj={
a:"c"
}
let es6_obg={
[a]:"c"
}
console.log(es5_obj,es6_obg);

3、新增API

  //新增api
console.log("字符串",Object.is("abc","abc"),"abc"==="abc"); //true true
console.log("数组",Object.is([],[]),[]===[]); //false false console.log("拷贝",Object.assign({a:"a"},{b:"b"})); //a:"a",b:"b"

  

  

  

es6之函数扩展与对象扩展的更多相关文章

  1. JavaScript 对象扩展代码

    JavaScript 扩展代码 更具需要写的几个扩展. 扩展核心自执行函数 Object.extend /** * 对象扩展体 参数是 {属性|方法:属性值|方法体} * 只执行实现 * * 实例对基 ...

  2. ES6对象扩展

    前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...

  3. ES6入门之对象扩展

    ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ...

  4. ES6学习之对象扩展

    简介表示法(直接写入变量和函数,作为对象的属性和方法) let x = "test" let obj={ x, //属性名为变量名,属性值为变量值 y(){console.log( ...

  5. ES6 - 对象扩展(增强字面量)

    /** * 对象的扩展 * * 增强对象字面量 * * 解决问题:缩减代码 */ { /** * 1.属性简表示法 * 变量foo直接写在大括号里面.这时,属性名就是变量名, 属性值就是变量值 */ ...

  6. 关于ES6的对象扩展运算符

    对象的扩展运算符(...),用于取出参数对象中的所有可遍历属性,然后拷贝到当前对象之中 对象扩展运算符: 1. 复制对象 let obj1 = { x: 1, y: 2, z: 3 } let obj ...

  7. es6学习日记5-对象的扩展

    属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = {foo}; baz // {foo: &q ...

  8. es6学习笔记9--函数的扩展

    函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接写在参 ...

  9. ES6学习笔记二:各种扩展

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7242967.html 一:字符串扩展 1:字符串遍历器 for (let char of str) { // ...

随机推荐

  1. net core 发布到服务器的方式

    ---恢复内容开始(15:05:15)--- using (var scope = ServiceProvider.CreateScope()){ var aSubscriber = Activato ...

  2. 使用connect-multiparty限制nodejs图片上传

    connect-multiparty中间件,可用于获取文件上传时各种参数,比如文件大小.格式等,具体使用: var multipart = require('connect-multiparty'); ...

  3. Flash流媒体服务器软件

    所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看.收听(即所谓的“在线欣赏”),而不需要等整个压缩文件下载到自己的机器上才可以欣赏的网络传输技术.目 ...

  4. SSM实现批量删除功能

    批量删除功能的实现 其实实现这个功能还是挺简单的 因为我这是直接拼接的,所以用了DOM方法来获取id话不多说直接上代码首先是复选框全选和反选这里的话 获取最上面一个复选框的状态同步到拼接的复选框  $ ...

  5. Error:Execution failed for task ':xutils:mergeDebugAndroidTestResources'. > No slave process to proc

    Error:Execution failed for task ':xutils:mergeDebugAndroidTestResources'. > No slave process to p ...

  6. logstash结合es,日志收集

    1.下载好logstash后,解压目录 2.进入bin目录,新建文件 logstash_default.conf input { tcp { port => 4560 codec => & ...

  7. PAT 1061. Dating

    题是别人出的,不按她的想法来也没办法,真心想k一顿 #include <cstdio> #include <cstdlib> using namespace std; cons ...

  8. 用CSS隐藏页面元素的5种方法

    1.opacity设置一个元素的透明度只是从视觉上隐藏元素,对页面布局还是有影响,读屏软件会原样读出 2.visibility设置为hidden将隐藏我们的元素,对网页布局还是起作用,子元素也会被隐藏 ...

  9. json字串转换成泛型类

    webrequst发送到指定的url using System; using System.Collections.Generic; using Newtonsoft.Json; using Syst ...

  10. 考勤机sql语句

    考勤机sql语句 SELECT checkinout.id as 序号 ,checkinout.pin as 打卡编号,userinfo.name 姓名, checkinout.checktime 签 ...