ES6 之函数扩展和对象扩展

简单记录,方便快速复习~

函数扩展: 参数默认值、rest 参数、扩展运算符、箭头函数、尾调用...

对象扩展: 简洁表示、属性表达式、新增API等...

//函数扩展

// 参数默认值
function fn(x,y=1){
  console.log(x+y)
}
fn(2)
{ // 注意作用域
  let x = 1
  function test(x,y=x) {
    console.log(x,y)
  }
  test(2) // 2 2
}
{ // 注意作用域
  let x = 1
  function test1(a,y=x){
    console.log(a,y)
  }
  test1(2) // 2 1
}

// rest参数
function fn1(...args) {
  console.log(args)
}
fn1(1,2,3)

function fn2(x,y,...z){
  console.log(z)
}
fn2(1,2,3,4,5)

// 扩展运算符
{
  console.log(‘a‘,...[1,2,3,4])
}

// 箭头函数 —— 注意this指向问题
// ES5 中 this指向函数调用的地方, ES6中 this指向函数定义的地方
let fn4 = (x,y) => {
  console.log(x + y)
}
console.log(typeof fn4)
fn4(1,3)

// 尾调用
function util(x) {
  console.log(x)
}
function mUtil(x) {
  return util(x)
}
mUtil(1)

// 对象扩展
// 简洁表示
{
  let a = 1,b = 2
  let es5 = {
    a: a,
    b: b
  }
  console.log(es5)
}
{
  let a =1, b = 2
  let es6 = {
    a,
    b
  }
  console.log(es6)
}

let es5_method = {
  sum: function(x,y) {
    console.log(x+y)
  }
}
es5_method.sum(1,2)

let es6_method = {
  sum(x,y) {
    console.log(x+y)
  }
}
es6_method.sum(1,2)
// 属性表达式
let a = "name"
let es6_obj = {  // [a] 是一个表达式
  [a]: "zhangsan"
}
console.log(es6_obj)
// 新增API
console.log( Object.is(‘abc‘,‘abc‘) ) //等同于 ===
console.log(Object.is([],[])) //false

console.log(‘浅拷贝‘,Object.assign({a:‘a‘},{b: ‘b‘}))
{
let {a,b,...c} = {a: ‘a‘,b:‘b‘,c: ‘c‘,d: ‘d‘}
console.log(c)
}

  

原文地址:https://www.cnblogs.com/lk-food/p/12116900.html

时间: 2024-10-11 09:18:39

ES6 之函数扩展和对象扩展的相关文章

ES6浅谈--数组扩展、对象扩展

数组扩展 1.includes()方法,参数为要检测的值.includes方法有点像indexOf(),indexOf未检测到则返回-1,否则返回下标.includes则是返回true或false.includes可以检测NaN.第二个参数表示从什么位置检测. 2.flat和flatMap.flat负责把数组拉平,意思是一个二维数组调用flat方法会变成一维数组.参数传的是数组的维度.例如传2则表示将3维拉成1维.如果数组中有空位则跳过.flatMap有点像flat方法和Map方法的结合.先对每

ES6入门教程---数值扩展数组扩展和对象扩展

1.数值扩展 var num = 0b11; console.log(num);3 var num = 0o11;console.log(num);9 var num = 1.234; console.log(Math.trunc(num))//干掉小数点console.log(Math.sign(-0));//判断参数是正数.负数.正0还是负0 console.log(Math.hypot(3,4))//返回所有参数的平方和的平方根(勾股定理) 2.数组扩展 var str = 'xunian

ES6对象扩展

前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象交互的方法.本章将详细介绍ES6对象扩展 对象类别 在浏览器这样的执行环境中,对象没有统一的标准,在标准中又使用不同的术语描述对象,ES6规范清晰定义了每一个类别的对象,对象的类别如下 1.普通(Ordinary)对象 具有JS对象所有的默认内部行为 2.特异(Exotic)对象 具有某些与默认行为

ES6学习之对象扩展

简介表示法(直接写入变量和函数,作为对象的属性和方法) let x = "test" let obj={ x, //属性名为变量名,属性值为变量值 y(){console.log("hello")} } //以上相当于 let obj = { x:'test', y:function(){ console.log("hello") } } 属性名表达式(表达式作为对象的属性名,把表达式放在方括号内.) let aa = "hello&q

Javascript使用函数apply扩展环境对象

Javascript使用函数apply扩展环境对象 通过实例对象作为参数传入调用构造函数对象的apply方法,以使实例对象作为环境对象在作为一个普通函数的构造函数中执行,构造函数的属性会覆盖到实例对象上,从而实现实例对象的属性扩展. 1.函数对象的apply和call传入参数     var tag = "global";      function say(){          for(var args = "", i = 0; i < arguments

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

/** * 对象的扩展 * * 增强对象字面量 * * 解决问题:缩减代码 */ { /** * 1.属性简表示法 * 变量foo直接写在大括号里面.这时,属性名就是变量名, 属性值就是变量值 */ const foo = 'bar'; const baz = { foo }; // baz // {foo: "bar"} // 等同于 // const baz = { foo: foo }; /** * 方法简写 */ const o1 = { method() { return &

ES6 (3):类型扩展

一.字符串 模版字符串:反引号(`)标识. $('#result').append(` There are <b>${basket.count}</b> items in your basket, <em>${basket.onSale}</em> are on sale! `); 变量嵌入(定义变量,使用$ 获取): // 字符串中嵌入变量 let name = "Bob", time = "today"; `Hel

ES6 -箭头函数 ,对象的函数解构

ES6 -箭头函数: //es6 中的箭头函数和扩展 //es5的写法 // function add(a,b){ // return a + b; // } // add(1,2); //3 function add1(a,b=1){ if(a==0){ throw new Error('a is zero'); } return a+b; } //console.log(add1(0)) //Uncaught Error: a is zero 主动抛出异常 //严谨模式 function a

[SOE] ArcGIS Server对象扩展(SOE)开发注意事项

ArcGIS  Server对象扩展(SOE)开发注意事项 1.SOE介绍 在ArcGIS 10.1中ArcGIS Server不在支持DCOM方式的连接,这也就意味着我们不能通过本地方式的连接使用ArcObjects提供的更多功能,所以我们推荐一种新的方式来实现这些功能,这种方式就是SOE服务器对象扩展.SOE存在于整个服务对象的生存期内,可以利用服务对象的资源并对其进行扩展.一个SOE通常在服务对象创建是初始化,并且在整个服务对象的生存期内只会被创建一次.SOE支持SOAP和REST两种访问