ECMA2015(ES6)简单入门-2-参数默认-...-解构参数-__proto__

默认参数设置
//es6里可以给定义的函数接受的参数设置默认的值;
//如果不去指定函数参数的值 那函数调用的时候
就使用默认的值

function  breakfast_1(dessert="apple",drink="tea"){//指定默认值 直接在形参的后面赋值
    return `${dessert}+and+${drink}`;
}
console.log(
    breakfast_1()
);
console.log("......现在设置他们的值后......")
console.log(
    breakfast_1("X倒日本","R倒棒子")
);

 …es6中心添加的操作符号 可以叫做spread或者rest

let fruit=["apple","banana"],
    foods=["姑娘","小伙","法海",...fruit];//fruit展开放入到foods中
//展开
 console.log(fruit);//输出的是数组
console.log(...fruit);//单独输出的是数组里的每一个值 相当于把数组展开了
console.log(foods);
//...rest 剩余操作符 一般用在函数的参数里面
function  breakfast_2(dessert,drink,...food){
    //让函数支持更多的参数
    console.log(dessert,drink,food);//其余的参数放在了一个叫food的数组里
    console.log("--------下面的是展开的---------");
    console.log(dessert,drink,...food);
}
breakfast_2("apple","tea","tea1","tea2","tea3");
解构参数
function  breakfast_3(man,woman,{location,restaurant}={}){
    console.log(man+"和"+woman+"在"+location+restaurant+"洗澡");
}
breakfast_3("乔瑞","漂亮姑娘",{location:"上海",restaurant:"必胜客"});
function  breakfast_4(man,woman,{location,restaurant}={}){
    //es6给函数添加了个name属性 能得到函数的名字
}
console.log(
    breakfast_4.name
);
//如果是匿名函数 函数名字就是定义的变量
// 如果是定义变量的有名字函数 那么打印出来的还是函数的名字而不是定义的变量
let breakfast= function  breakfast_5(man,woman,{location,restaurant}={}){
    //es6给函数添加了个name属性 能得到函数的名字
};
console.log(
    breakfast.name//因为breakfast_5它的优先级更高
);
箭头函数  使用箭头定义函数的方式
let  breakfast_6 = dessert => dessert;
//let定义变量  变量名 =函数开始接受的参数 => 函数返回的值
//普通的写法
var breakfast_7 =function breakfast_7(dessert) {
    return dessert
};
// 如果有多个参数
let  breakfast_8 = (dessert,drink) => dessert + drink;

// 如果无参数
let  breakfast_9 = () => console.log("this 里面没参数");
     breakfast_9();
//let 变量=变量值
let dessert="cake",drink="coco";

    foods={//dessert属性:dessert属性值
// 在对象里面添加跟变量名一样的属性的话,并且属性的值就是变量表示的值;可以直接把:以后都去掉
        dessert,
        drink,
        breackfast_old:function(){alert("old")},// 以前的写法
        breackfast_now(){alert("now")}//        现在的写法
	};
foods.breackfast_old();
foods.breackfast_now();
对象属性名
let man={},drinks="name little";
    man.name="make";
    //属性名中间不能有空格man.name little="daead"
// 如果有空格可以用方括号+""
man["name little"]="daead";
man[drinks]="daead";//这和上行的代码是一样的意思
//判断两个东西是不是同一东西nan=nan,+0!=-0
console.log(
    Object.is([],Array)
);

 Object.assign()把对象的值赋值到另一个对象里

let breakfast_10 = {};
//Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到//目标对象。它将返回目标对象。
Object.assign(
    breakfast_10,//接受者
    {drink:"beer"}//复制来源
)
console.log(breakfast_10);

Object.is() 方法判断两个值是否是相同的值。

Object.is(value1, value2);
参数
value1第一个需要比较的值。
value2第二个需要比较的值。
返回值表示两个参数是否相同的布尔值 。

Object.is() 判断两个值是否相同。如果下列任何一项成立,则两个值相同:

两个值都是 undefined
两个值都是 null
两个值都是 true 或者都是 false
两个值是由相同个数的字符按照相同的顺序组成的字符串
两个值指向同一个对象
两个值都是数字并且
都是正零 +0
都是负零 -0
都是 NaN
都是除零和 NaN 外的其它同一个数字
这种相等性判断逻辑和传统的 == 运算不同,== 运算符会对它两边的操作数做隐式类型转换(如果它们类型不同),然后才进行相等性比较,(所以才会有类似 "" == false 等于 true 的现象),但 Object.is 不会做这种类型转换。

这与 === 运算符的判定方式也不一样。=== 运算符(和== 运算符)将数字值 -0+0 视为相等,并认为 Number.NaN 不等于 NaN

   使用__proto__设置继承别的对象里的方法

let breakfast_11 = {
    getDrink () {
        return "coffee"
    }
};
let dinner = {
    getDrink(){
        return "beer";
    }
};
let sunday={
    __proto__:breakfast_11,//这个sunday就拥有了breakfast_11下的getDrink的方法
//如果想在sunday里面重新定义getDrink方法 覆盖掉breakfast_11对象里的getDrink方法
//并且想在这个sunday的getDrink方法里得到breakfast_11的getDrink方法返回来的值
// super+方法名字 得到方法返回来的东西
    getDrink(){
    return super.getDrink()+"wahahahahahh";
    //执行breakfast_11对象里面的getDrink方法去得到返回来的值
}
};
console.log(sunday.getDrink());
console.log(Object.getPrototypeOf(sunday) === breakfast_11);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值