ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ES6(这是我见过写的最好的)!推荐

2020-11-26 18:33:29  阅读:151  来源: 互联网

标签:__ ES6 name function 推荐 原型 var prototype 最好


此文转载自:https://blog.csdn.net/weixin_50539818/article/details/109999158

文章目录

ES6总结

var,let,const的区别

1.var 变量可以提升,let,const变量不可以提升
2.var 没有暂时性死区,let,const有暂时性死区
3.var 允许重复声明,let,const不可以重复声明
4.var 和let可以修改声明的变量,const不可以修改
5.var 没有块级作用域,let和const有块级作用域

箭头函数和function的区别

1.箭头函数是匿名函数,不能作为构造函数,不能使用new
2.箭头函数内没有arguments,可以用展开运算符...解决
3.箭头函数的this,始终指向父级上下文(箭头函数的this取决于定义位置父级的上下文,跟使用位置没关系,普通函数this指向调用的那个对象)
4.箭头函数不能通过call() 、 apply() 、bind()方法直接修改它的this指向。(call、aaply、bind会默认忽略第一个参数,但是可以正常传参)
5.箭头函数没有原型属性

结构赋值

1 结构赋值就是从对象或数组中提取值,吧右边的值赋给左边
2 分为数据结构,对象结构,结构赋值,结构对象,从方法中返回

原型

实例化对象和原型的constructor指向构造函数
构造函数的prototype属性指向原型对象
实例化对象的__proto__属性指向原型对象
JavaScript里面每个对象都有一个__paoto__属性,这个属性就是他的原型
每个方法里面都有一个prototype属性,也是他的原型
constructor prototype 实例化对象的__proto__ 实例化对象和原型 构造函数的 原型对象 原型对象

原型链

实例化对象的__proto__指向构造函数的prototype
构造函数prototype的__proto__指向Object.prototype
Object.prototype的__proto__指向null

__proto__ __proto__ __proto__ 实例化对象 构造函数的prototype Object.prototype null

继承

1.原型链继承

父类的实例做为子类的原型

function Fu(){
	this.arr=['red','blue','green']
}
function Zi(){}
Zi.prototype=new Fu();
var a=new Zi
a.arr.push('black')
2.构造函数继承

在子类内,使用call调用父类方法,并将父类的this修改为子类的this,相当于是吧父类的实例属性复制了一份放到子类的函数内

function Fu(){
	this.arr=['red','blue','green'];
}
function Zi(){
	Fu.call(this);
}
var a=new Zi();
a.arr.push('black')
console.log(a.arr)
3.组合式继承

既能调用父类实例属性,又能调用父类原型属性

function Fu(name){
	this.name=name;
	this.arr=['red','blue','green'];
}
Fu.prototype.say=function(){
	console.log(this.name)
}
function Zi(name,age){
	Fu.call(this,name);
	this.age=age;
}
Zi.prototype=new Fu();
var a=new Zi('black',21,'女')
a.say()//成功继承
4.class类继承

相当于es5中构造函数
class中定义方法时,前后不能加function,全部定义在class的protopyte属性中
class中定义的所有方法是不可枚举的
class中只能定义方法,不能定义对象,变量等
class和方法内默认都是严格模式
es5中constructor为隐式属性

class Fu(){
	constructor(name){
		this.name=name
	}
	say(){
		console.log(this.name)
	}
}
class Zi extends Fu{
	constructor(name,age){
		super(name)
		this.age=age
	}
	say(){super.say()}
}
var a=new Zi('张三')
a.say()

Promise

1.概述:Promise是异步编程的一种解决方案,从语法上讲,Promise是一个对象,可以获取异步操作的消息
2.目的: (1)、避免回调地狱的问题(2)、Promise对象提供了简洁的API,使得控制异步操作更加容易
3.Promise有三种状态:pendding //正在请求,rejected //失败,resolved //成功
4.基础用法:new Promise(function(resolve,reject){ })
resolved,rejected函数:在异步事件状态pendding->resolved回调成功时,通过调用resolved函数返回结果;当异步操作失败时,回调用rejected函数显示错误信息

$(function(){
    // 封装一个promise;将url提取出来;
    var  p  = function(url){
        return new Promise(function(resolve,reject){
            $.get(url,function(data){
            resolve(data);
            })
        })
    }
    Promise.all([
            p("https://cnodejs.org/api/v1/topics?tab=good"),
            p("https://cnodejs.org/api/v1/topics?tab=share"),
        ]).then(function(result){
            console.log(result);
        })
})

标签:__,ES6,name,function,推荐,原型,var,prototype,最好
来源: https://www.cnblogs.com/phyger/p/14043851.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有