es6之函数扩展与对象扩展
一、函数扩展
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之函数扩展与对象扩展的更多相关文章
- JavaScript 对象扩展代码
JavaScript 扩展代码 更具需要写的几个扩展. 扩展核心自执行函数 Object.extend /** * 对象扩展体 参数是 {属性|方法:属性值|方法体} * 只执行实现 * * 实例对基 ...
- ES6对象扩展
前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...
- ES6入门之对象扩展
ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ...
- ES6学习之对象扩展
简介表示法(直接写入变量和函数,作为对象的属性和方法) let x = "test" let obj={ x, //属性名为变量名,属性值为变量值 y(){console.log( ...
- ES6 - 对象扩展(增强字面量)
/** * 对象的扩展 * * 增强对象字面量 * * 解决问题:缩减代码 */ { /** * 1.属性简表示法 * 变量foo直接写在大括号里面.这时,属性名就是变量名, 属性值就是变量值 */ ...
- 关于ES6的对象扩展运算符
对象的扩展运算符(...),用于取出参数对象中的所有可遍历属性,然后拷贝到当前对象之中 对象扩展运算符: 1. 复制对象 let obj1 = { x: 1, y: 2, z: 3 } let obj ...
- es6学习日记5-对象的扩展
属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = {foo}; baz // {foo: &q ...
- es6学习笔记9--函数的扩展
函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接写在参 ...
- ES6学习笔记二:各种扩展
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7242967.html 一:字符串扩展 1:字符串遍历器 for (let char of str) { // ...
随机推荐
- C# 页面抽奖实例 asp.net
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
- struts2随笔
1.struts.properties配置常量等同于struts.xml中配置(置于类加载路径下面)struts.multipart.maxSize文件上传最大大小struts.action.exte ...
- Spring.Net IOC基本应用和在MVC4中的应用
1.Spring.Net的IOC简单应用 新建一个解决方案添加一个控制台应用程序和一个业务层一个业务层的接口层,通过配置,让控制台应用程序调业务层的方法 1)新建如下图所示,BLL为业务层,通过Spr ...
- javaEE Design Patter(2)详解3个设计模式
Factory (bean creating) Proxy(Agent)(Aop)书有~ Templete(springMVC Facelets)//此处及以上忽略 工厂模式(Factory) 工厂模 ...
- sql:function
--查询权限函数 --1 declare @names varchar(3000) set @names='' select @names=@names+isnull(AdminPermissForm ...
- git日常使用
git强制回滚指定版本git reset --hard xxx(版本名) git强制推送git push -f remote(远程地址) branch(远程分支) 查看远程分支 git branch ...
- 关于ES7里面的async和await
async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案.目前,async / await这个特性已经是stage 3的建议,可以看看TC39的进度,本篇文章将分享asy ...
- Web.py报错:OSError: No socket could be created -- (('0.0.0.0', 8080):
web.py报错 Python代码: import web urls = ( '/(.*)', 'hello' ) app = web.application(urls, globals()) cla ...
- VC++ 6.0如何创建与调用动态链接库
原文:http://blog.csdn.net/wanghaihao_1/article/details/51098451 1.静态链接库与动态链接库区别: 静态链接库:lib中的指令被直接包含在最终 ...
- Linux系统下安装Gitlab
Linux系统下安装Gitlab 一.简介 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与 ...