JavaScript学习笔记(8.0)

33 篇文章 0 订阅
13 篇文章 0 订阅

改变this指向的三个方式

var obj1={
    name:"obj1",
    grtName:function(){
        console.log("getName1",this.name)
}}

obj1.getName()

第一种:call() 

var obj1={
    name:"obj1",
    grtName:function(){
        console.log("getName1",this.name)
}}

obj1.getName()


var obj2={
    name:"obj2",
    grtName:function(){
        console.log("getName2",this.name)
}}

obj1.getName.call(obj2,1,2,3,...,N)  //可以传递N个参数

第二种:apply()

obj1.getName.apply(obj2,[1,2,3...,N])   //只支持两个,且第二个参数是一个数组

第三种:bind()

//改变this指向为函数的第一个参数,不会自动执行函数
var newFun=obj1.getName.bind(obj2,1,2,3,....) 
console.log(newFun)
newFun()   //手动执行

let和var的区别

(1)let不能在未定义前使用,var可以。

(2)let不能重复定义,var可以。

(3)let是块级作用域,而var的作用域更广

const也和var有这三点的不同

const和let的区别

(1)const定义的是常量,let定义的是变量

箭头函数

//原始
var test1=function(){
    console.log("11111")
}

//箭头函数
var test2=()=>{
    console.log(2222)
}
test1()
test2()

箭头函数的特点

1.()可以省略,但是在只有一个形参参数的情况下

//省略写法
var test = a =>{
console.log(111,a)}

//原始
var test = (a) =>{
console.log(111,a)}

2.{}可以省略,只有一句代码的时候(只有返回值)

var test = a =>{
return 100*a
}

//省略写法

var test = a => 100*a
var list=["aaa","bbb","ccc"]
var newlist=list.map(function(item){
return `<li>${item}</li>`})

console.log(newlist.join(""))


//省略写法
var list=["aaa","bbb","ccc"]
var newlist=list.map(item=> `<li>${item}</li>`)

console.log(newlist.join(""))

3.没有arguments(伪数组)

var test=function(){
console.log(arguments[0],arguments[1],arguments[2])
}
test(1,2,3)

//伪数组转换
Array.from(arguments)

4.箭头函数没有this,

箭头函数this是父级作用域的

ES6的解构赋值

var arr=["xiaoming","zhangsan","lisi"]
let[x,y]=arr
console.log(x,y)

//不能直接拿最后一个值,而是以占位的形式依次取值
//交换两个变量的值
var a=10
var b=20
var[b,a]=[a,b]
console.log(a,b)   //交换后a=20,b=10
//多维数组的获取
var arr2=[1,2,[3,4,[5]]]

var[q,w,[e,r,[t]]]=arr2

console.log(t)  //5
var obj={
name:"zhangsan",
age"15",
place:"dongbei"
}
let{name,age,place:myplace}=obj
document.write(name)
document.write(age)
document.write(myplace)
var obj2={
name:"zhangsan",
age:"15",
place:{
province:"beijing",
city:"China"},
hobby:[1,2,3]
}

var {
name,
age,
place:{
province,
city},
hobby:[m,n,l]
}=obj2

console.log(name,age,province,city,m,n,l)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mez_Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值