es6中运算符与语句

本文深入探讨JavaScript中的箭头函数、模块导入导出以及类的概念。箭头函数简化了函数定义,其this指向遵循上下文规则;模块通过export和import实现代码复用;类在JS中模拟了面向对象特性,包括构造函数、继承和静态属性方法。了解这些高级特性,能提升JS开发效率。
摘要由CSDN通过智能技术生成

1.箭头函数

定义式:var fn=function () {}

声明式:function fn() {}

箭头函数:var fn=(a,b)=>{}

var fn=(a,b)=>{
    console.log(this,111) // window,111
    retrun a+b
}
var obj={name:"jack",fn}
var re=obj.fn(100,200)

// this是离它最近的嵌套的function/方法这个函数的调用者 直到顶层都没有就是window

var obj={
    name:"jack",
    say:function(){
        var fn=(a)=>{
            console.log(this,11) // {name:"jack",say:f},11
            return 100
        }
        fn(2) // fn函数的调用者 window
    }
}
obj.say() // 调用者 obj
var fn=(a,b)=>{
    console.log(a+b)
    return a-b
}
fn(100,200)

如果箭头函数的执行体只有一个表达式,就是返回值,那么可以省略大括号

var fn2=(a,b)=>a*b
如果箭头函数的形参只有一个,可以省略参数体小括号

var fn3=a=>a*a

 注意:箭头函数不能用来创建对象,没有 this、super、arguments 和 new.target 绑定。

总结

  • 要有个箭头

  • 箭头的前面是小括号,放形参,只有一个形参的时候可以省略小括号;

  • 箭头的后面是函数体;

  • 如果函数体只有一个语句,没有{},此时的返回值不需要return;

  • 箭头函数里面的this总是指向最靠近的function 内部的this;

  • 对象里面的方法,尽可能不要使用箭头函数;

  • 箭头函数里面没有arguments,可以使用…reset,接收过来就是数组类型,接收的是形参之外的所有的实参;

2.模块

export导出

 与default关联使用,并且一个js模块中只能有一个export default语句

//导出字符串
export default "abc";

//导出数字
export default 123;

//导出布尔值
export default true;

//导出数组
export default [1,2,3];

//导出对象
var obj = {
	name: '张三',
	age: 20
}
export default obj;

//导出函数
var func = function() {
	console.log("func函数");
	return 100;
}
export default func;


//导出类
class People {
	constructor() {
		this.a = 100;
	}
	say() {
		console.log("say...");
	}
}
export default People;

 

import导入

  • from关联使用,此时script标签的type必须设置为module

  • 单例模式:多次重复执行同一句 import 语句,那么只会执行一次,而不会执行多次。import 同一模块,声明不同接口引用,会声明对应变量,但只执行一次 import

<script type="module">
	import People from './js/myModule.js';
	let p = new People();
	p.say();
</script>

 3.类

js是什么语言?

js是一个基于面向对象设计的单线程的静态脚本语言

面向对象(类,实例对象,继承,封装,多态)

基于面向对象设计 (本质没有继承,类等语法,但是按照自己的语法特征(原型思想) )

单线程 (代码只能一个业务一个业务的执行)

静态 

脚本语言(嵌入式语言)

声明类
class person{}
let p1=new Person()
console.log(p1)
匿名类
var fn=class{}
var f1=new fn()
console.log(f1)

js没有类,是原型的思想设计的类,但是学习和使用这个技术时,要用类的思想学习

class Person{
    constructor(a,b,c){
        console.log(66)
        this.x=a
        this.b=b
    }
    //对象的属性
    life=50
    //对象的原型对象的方法
    say1(){
        console.log(111,this.x)
    }
    //静态属性
    static life=200
    //静态方法
    static say2(){
        console.log(222)
    }
}
console.log(typeof(Person)) // function
var p1=new Person(10,20,30)
//Person类的内部可以写一个constructor方法,用这个类创建对象时,就会运行构造函数
// 不写构造函数,系统就会默认有一个空的构造运行
console.log(p1) // {x:10,b:20,life:50} life在对象中,say1在原型对象上,但是没有静态属性和静态方法
console.log(Person.life) // 200
console.log(Person.say2) // 222
静态属性和方法只在Person中,不在新创建的p1对象上

 继承

class Student extends Person{
    constructor(name){
        super(name) // 让Person类的构造函数的逻辑去帮我们构建对象空间
        this.age=20
        this.book="书名"
    }
}
var s1=new Student("marry")
console.log(s1) 
结果继承了Person的,同时新增了age和book两个属性
  • 解决代码的复用

  • 使用extends关键字实现继承

  • 子类可以继承父类中所有的方法和属性

  • 子类只能继承一个父类(单继承),一个父类可以有多个子类

  • 子类的构造方法中必须有super()来指定调用父类的构造方法,并且位于子类构造方法中的第一行

  • 子类中如果有与父类相同的方法和属性,将会优先使用子类的(覆盖)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值