es6汇总1

//-------------------------1.let命令
    // ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

    // var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。例如:在let x前增加一句typeof x就会报错,因为同一块作用域在let x之前,x无法进行任何操作。

    // let实际上为JavaScript新增了块级作用域,在{ } 被包围的范围外,不受内层的let变量影响(但会受var的“变量提升”影响)。

//----------------------- 2. const命令
// const声明一个只读的常量。一旦声明,常量的值就不能改变,且声明时必须立即初始化,不能留到以后赋值。const的作用域与let命令相同:只在声明所在的块级作用域内有效。

//------------------------3.字符串、数值、数组、对象扩展api

//..字符串

// includes(str) : 判断是否包含指定的字符串
// startsWith(str) : 判断是否以指定字符串开头
// endsWith(str) : 判断是否以指定字符串结尾
// repeat(count) : 重复指定次数

// let str = 'abcde';

// console.log(str.includes('b'));//true
// console.log(str.startsWith('a')); //true
// console.log(str.endsWith('e'));  //true
// console.log(str.repeat(3));  // abcdeabcdeabcde

//..数值
//。。。。。。 扩展
// 什么是NaN?

// NaN是数组类型但不是数字是代表非数字值的特殊值


//.. 二进制与八进制数值表示法: 二进制用0b, 八进制用0o

// Number.isFinite(i) : 判断是否是有限大的数
// Number.isNaN(i) : 判断是否是NaN
// Number.isInteger(i) : 判断是否是整数
// Number.parseInt(str) : 将字符串转换为对应的数值
// Math.trunc(i) : 直接去除小数部分

// console.log(Number.isNaN(NaN));//true
// console.log(Number.isInteger(123));//true
// console.log(Number.parseInt('321abc456'));//321
// console.log(Number.parseInt('a123abc456'));//NaN
// console.log(Math.trunc(123.11)); //123

//..数组

// Array.from(v) : 将伪数组对象或可遍历对象转换为真数组
// Array.of(v1, v2, v3) : 将一系列值转换成数组
// find(function(value, index, arr){return true}) : 找出第一个满足条件返回true的元素,没有返回undefind
// findIndex(function(value, index, arr){return true}) : 找出第一个满足条件返回true的元素下标,没有返回 -1


// const arr = [1, 2, 3, 4];
   
// let res = arr.find(function (a){
//     return a < 5;
//  });
 
// console.log(res);//返回undefind;


// let res = arr.findIndex(function(a){
//     return a > 1
// }) 

// console.log(res);


// 感觉和过滤有点一样filter

// let  newarray = arr.filter(item => {
//     return item>2
// })

// console.log(newarray);


// console.log(Array.of(1, 2, 3));

//..对象扩展:

// Object.is(v1, v2)       // 判断2个数据是否完全相等
//Object.assign(target, source1, source2…)   //将源对象的属性复制到目标对象上

// 直接操作 proto 属性
// let obj2 = {};
// obj2.proto = obj1;


// let obj = {};

// let obj1 = {username:'yang',age:24};

// let obj2 = {sex:'男'};

// Object.assign(obj,obj1,obj2);

// console.log(obj);//{username:'yang',age:24,sex:'男'};

// let obj3 = {};

// let obj4 = {money: 4000};

// obj3.__proto__= obj4;

// console.log(obj3)//{};

// console.log(obj3.money);//4000;


// https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype



// Object.prototype 的 __proto__  属性是一个访问器属性(一个getter函数和一个setter函数), 
// 暴露了通过它访问的对象的内部[[Prototype]] (一个对象或 null)。
// 使用__proto__是有争议的,也不鼓励使用它。
// 因为它从来没有被包括在EcmaScript语言规范中,
// 但是现代浏览器都实现了它。__proto__属性已在ECMAScript 6语言规范中标准化,
// 用于确保Web浏览器的兼容性,因此它未来将被支持。它已被不推荐使用, 
// 现在更推荐使用Object.getPrototypeOf/Reflect.getPrototypeOf 和Object.setPrototypeOf/Reflect.setPrototypeOf
// (尽管如此,设置对象的[[Prototype]]是一个缓慢的操作,如果性能是一个问题,应该避免)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聒噪,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值