<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>章鱼先生</title>
</head>
<body>
<script>
/*
* 数组的扩展
* */
{
//扩展运算符 ...
//拆开数组
//console.log(...[1, 2, 3, 4, 5]);
//扩展运算符和函数的使用
//function fun(array,item){
// array.push(...item);
//}
//let array=[];
//fun(array,[1,2,3,4,5]);
//console.log(array);
//扩展运算符 替换apply args 数组型
//function f1(a,b,c){
// console.log(a, b, c);
//}
//let m=[1,2,3];
//f1.apply(null,m);
//f1(...m);
//扩展运算符 复制数组 引用空间不一样
//let a=[1,2];
//let c=a;//普通复制 引用空间一致
//let b= [...a];
//b[0]="a";
//c[0]="b";
//console.log(a, b,c);
//扩展运算符 合并数组
//let a=[1,2];
//let b=[3,4];
//let c= [...a,...b];
//console.log(c);
//数组的扩展方法 Array.from(); 讲类数组对象转化为正真的数组
//let a={
// 0:"a",
// 1:"b",
// length:2
//};
//console.log(Array.from(a));
//数组的扩展方法 Array.of() 将一组值转换为数组
//console.log(Array.of(1, 2, 3, 4));
//find() 找出数组里面满足条件的第一个值直接返回
//let a=[1,2,3,4,5,6];
//console.log(a.find((n)=>{
// return n%2==0;
//}));
//console.log(a.findIndex((value,index,arr)=>{
// return value%7==0;
//}));
}
/*
* 对象的扩展
* ES6 允许直接在对象内部声明属性和方法
* */
{
//let obj={
// name:"张三",
// sleep(){
// console.log("wozai");
// }
//};
//obj.sleep();
//ES6允许 通过字面量定义对象属性
//let _sex="sex";
//let a="age";
//let b="Now";
//let obj={
// name:"毛豆",
// [_sex]:"男",
// [a+b]:20
//};
//console.log(obj);
//console.log(obj['name']);
//console.log(obj.name);
//console.log(obj[_sex]);
//let obj={
// name:"张三",
// sex:"男"
//};
//console.log(Object.getOwnPropertyDescriptor(obj,"name"));
/*writable: true 可读写
enumerable: true 可枚举
configurable: true 可配置*/
//修改上面的配置
//Object.defineProperty(obj,"sex",{
// value: "李四",
// writable: true,
// enumerable: true,
// configurable: true
//});
//Object.keys() 返回当前对象的键 enumerable 为false则会忽略该属性
//console.log(Object.keys(obj));
//Object.values() 返回当前对象的值
//console.log(Object.values(obj));
//Object.entries() 返回当前对象的键值 返回一个数组
//console.log(Object.entries(obj));
//_proto_ 获取当前对象的原型
//console.log(obj.__proto__);
//let ob={
// eat(){
// console.log("吃饭");
// }
//};
//设置对象的原型
//Object.setPrototypeOf(obj,ob);
//console.log(obj.__proto__);
//获取当前对象的原型==_proto_
//console.log(Object.getPrototypeOf(obj));
//Object.is() 严格判断两个对象是否相等 类似===
//let a={};
//let b={};
//let c=a;
//console.log(Object.is(1, 1));//true
//console.log(Object.is(null, null));//true
//console.log(Object.is([], []));//false
//console.log(Object.is({}, {}));//false
//console.log(Object.is(a, c));//true
//Object.assign() 合并对象
//let ob1={
// name:"张三"
//};
//let ob2={
// name:"李四",
// sex:"男"
//};
//console.log(Object.assign({}, ob1, ob2));
//let c=Object.assign({},ob1);
//console.log(c);
//Object.assign() 复制对象 浅复制 内里还是同一个引用空间
//let obj={
// a:1,
// b:2,
// c:{
// m:2
// }
//};
//let b=Object.assign({},obj);
//obj.a=10;
//obj.c.m=30;
//console.log(obj, b);
//ES6 扩展的 super 指向当前对象的原型对象 this 指向当前对象
//只能写在对象的方法内部
let proto={
sleep(){
console.log("睡觉");
}
}
let preson={
name:"张三",
logproto(){
super.sleep();
}
}
Object.setPrototypeOf(preson,proto);
preson.logproto();
}
</script>
</body>
</html>
ES6 (2)
最新推荐文章于 2022-11-07 19:06:10 发布