es6初学习

let const promise class symbol

// var  let  const
{
    var a=12;
    let b=15;
    {
        console.log(a,b)//12,15
    }
}
console.log(a,b)//12  notdefined
//1、leak
for(let i=0;i<5;i++)
{}
console.log(i)//notdefined
//2、提升
function f(){
    var a;//提升 类似于这样
    console.log(a);//undefined
    var a=12;
}
function f(){
    console.log(a);//notdefined
    let a=12;
}
{
    let a;
    var a;//Uncaught SyntaxError: Identifier 'a' has already been declared
}
//3、let代替立即执行匿名函数 
let config;
{
    config=[];
    config.push(1)
    config.push(2)
    config.push(5)
}
var config =(function(){
    var config=[];
    config.push(1)
    config.push(2)
    config.push(5)
})();
//const 内存地址不能修改 
const a=12;
a=15//x
const a={
    name:'xue',
}
a.name='hahaha' 
console.log(a.name)//hahaha  
Object.freeze(a)//彻底冻结
a.name='xuxuxux'//严格模式抛出错误 不可更改




// class 类
//以前的写法  fulei
function User(name,age){
    this.name=name;
    this.age=age;
}
//静态方法
User.etclassname=function(){
    return 'User';
}
//添加公共方法

User.prototype.changename=function(name){
    this.name=name
}
//取值对线
Object.defineProperty(User.prototype,'info',{
    get(){
        return 'name'+this.name ;
    }
})

//zilei
function Manement(name,age,password)
{
    User.call(this,name,age)
    this.password=password;
}
//继承静态方法
Manement.__proto__=User;
//继承prototype方法
Manement.prototype=User.prototype;
// 新方法
Manement.changepassword=function(password){
    this.password=password;
}
var manement=new Manement('xue','14','123456');
manement.changename('xuexuexue');
console.log(manement.info)

//class 
class User{
    constructor(name,age){
        this.name=name;
        this.age=age;
    }
    static getclassname(){
        return 'User';
    }
    changename(name){
        this.name=name;
    }
    changeae(age){
        this.age=age;
    }
    get info(){
        return 'same as '
    }
}
class Manement extends User{
    constructor(name,age,password)
    {
        super(name,age)
        this.password=password;
    }
    changepassword(password){
        this.password=password;

    }
}

//promise
function async(a,b){
    return new Promise(function(resolve,reject)
    {
        //有结果调用resolve 并且把结果给resolve  错误的话有reject函数
        setTimeout(function(){
            resolve(a+b);
        },200)
    })
}
async(1,2)
.then(function(resulut)
{
    if(resulut>2)
    {
        return async(resulut,2);
    }
})
.then(function(resulut)
{
    if(resulut>4)
    {
        console.log('ok')
    }
})
//原生
function asyncc(a,b,cd)
{
    setTimeout(function(){
        cd(a+b);
    },200)
}
asyncc(1,2,function(resuluts)
{
    if(resuluts>2){
        asyncc(resuluts,2,function(resuluts)
        {
            if(resuluts>4){
                console.log('ok')
            }
        })
    }
})
//例子
class User{
    constructor (name){
        this.name=name;
    }
    send(ch)
    {
        let name=this.name;
        return new Promise(function(resolve,reject)
        {
            setTimeout(function(){
                if(name=='xue'){
                    resolve('success');
                }
                else{
                    reject('error')
                }
            },200);
            
        });
    }
}
//如果有reject并且函数里面没有在抛出异常 外部的catch不会执行
const useer=new User('xuee');
useer.send()
.then(function(a){
    console.log(a);
},function(err){console.log(err)}).catch(function (err){console.log(err)})



var promise=new promise(function(resolve,reject)
{
    resolve('hello')
})
promise.then(function(result){
console.log(result)
})
var promise2=Promise.reject('err');
promise2.then(null,function(err){
    console.log(err)
})
function ascynfun(a,b){
    return new Promise(function(resolve,reject){
        if(typeof a!='number'||typeof b!='number')
        {
            reject('no number')
        }
        setTimeout(function(){
            resolve(a+b)
        },200);
    })
}
var resultlist=[];
ascynfun(1,2)
.then(function(result){
resultlist.push(result);
return  ascynfun(2,3);
})
.then(function(result){
    resultlist.push(result);
    return  ascynfun(3,4);
})

//共同点 一旦有错误抛出错误 
var  promise=Promise.all([ascynfun(1,2),ascynfun(2,3)])
//[3,5] 返回所有promise结果
var  promise=Promise.race([ascynfun(1,2),ascynfun(2,3)])
//得到结果会排序 哪个结果先得到就会得到谁




//symbols  不重复
let name=Symbol('name');
let name2=Symbol('name');
name==name2  //false
let name=Symbol.for('name');
let name2=Symbol.for('name');
name==name2 //true
Symbol.keyFor(name)//name
//模拟私有属性
let getname=Symbol('name');
let obj={
    [getname](){
        return 'xue'
    }

}
console.log(obj[getname]())
//属性遍历
let name=Symbol('name')
let obj={
    age:22,
    [name]:'xue'
}
console.log(Object.keys(obj));
//["age"] 打印不出来 symbol的那个
for (let i in obj){
    console.log(i)
}
//age
Object.getOwnPropertyNames(obj)
//['age']
//解决方法
Object.getOwnPropertySymbols(obj)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值