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) { // ...
随机推荐
- node.js搭建https服务器
HTTPS简介 HTTPS:(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...
- Java实现在线预览–openOffice实现
实现逻辑有两种: 一.利用jodconverter(基于OpenOffice服务)将文件(.doc..docx..xls..ppt)转化为html格式. 二.利用jodconverter(基于Open ...
- 阿里云、青云、腾讯云服务器,Mysql数据库,Redis等产品性能对比
阿里云.青云.腾讯云服务器,Mysql数据库,Redis等产品都使用过,对比维度很多就不一一放出.直接放结论吧:买的腾讯(金融专区)服务器,Mysql(TDSql)把所有项目转到腾讯云,但是没有用腾讯 ...
- CXF生成客户端遇到的问题
一.CXF环境配置路径错误 1.错误现象 在命令行中输入 wsdl2java -v 检查CXF安装是否正确. 出现错误=> ERROR: Unable to find cxf-manifest. ...
- hdu 1565 方格取数(1) 状态压缩dp
方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Effective C++ .06 阻止编译器自动生成函数以及被他人调用
这节讲了下如何防止对象拷贝(隐藏并不能被其他人调用) 两种方法: 1. 将拷贝构造函数声明为private 并且声明函数但不进行定义 #include <iostream> #includ ...
- Java中线程的实现
在Java中要想实现多线程代码有两种方法,一种是继承 Thread 类,另一种就是实现 Runnable 接口 一.继承 Thread 类 Thread 类是在 java.lang 包中定义的,一个类 ...
- Android学习——自定义控件(二)
这篇文章来介绍自定义组合控件,自定义组合控件的应用场景很多,比如当你的UI如下时: 倘若不使用组合控件,则需要在XML文件中声明4个TextView和4个EditText,而使用了组合控件,则只需要四 ...
- Kettle数据抽取解决方案
一. Kettle介绍 1. Kettle简介 ETL即数据抽取(Extract).转换(Transform).装载(Load)的过程.Kettle的中文翻译为水壶.Kettle以元数据驱动的方式提供 ...
- C++数组怎么复制
C++数组怎么复制: #include <string.h>main(){int a[10]={34,56,4,10,77,51,93,30,5,52};int b[10];memcpy( ...