数组和对象应用
---》let arr1=[5,4,3,2]; //定义数组 arr1[2] ---》let arr2=[0,1,[2,3],4]; //二级数组,嵌套数组 arr2[2][1] ---》let arr3=[4,3,{"name":"lucas"},1] //数组对象 arr3[2].name ---》let arr4=[4,3,{"name":[3,2,1]},1] //多级嵌套 arr4[2].name[1] ---》let arr5=[5,4,function(){return console.log('hello')},2,1] //数组方法(函数) arr5[2]() //必须存在括号 ---》let obj1={"name":"lucas","age":23}; //定义对象 obj1.name ---》let obj2={"name":{"age":23}}; //二级对象,嵌套对象 obj2.name.age ---》let obj={name:"zhangsan",colors:["red", "green", "blue"]}; //对象数组 obj.colors[1] ---》let obj4={"name":[5,4,3,{age:22},1]} //多级嵌套 obj4.name[3].age ---》let obj5={"name":"lucas",my:function(){console.log(return this.name)}} //对象函数 obj5.my() //如果是多级嵌套函数则需加上obj5.my()() 1.普通对象方法 let obj5={"name":"lucas",my:function(){ return function(){alert("code")}; }} alert(obj5.my()()) //code 2.普通对象方法 let obj5={"name":"lucas",my:function(){ var name="code" //永远不会指向这个 return function(){console.log(this.name)} //没有指向上级 }} obj5.my()() //空白或者undefine 3.箭头函数(1) let obj={name,age,myFun:()=>console.log(this.name)} //箭头函数指向window,或者全局name变量
箭头函数会捕获其所在上下文的 this 值,作为自己的 this 值
4.箭头函数(2) let obj5={"name":"lucas",my:function(){ var name="code"; //永远不会指向这个 return ()=>{alert(this.name)}; //箭头函数指向上级函数 }} obj5.my()() //lucas
4.箭头函数(3)
var obj = {
a: 10,
b: function(n){
var f = (v) => v + this.a; 1+10
return f(n);
},
c: function(n) {
var f = (v) => v + this.a;
//var f = function(v){return v + this.a}; //输出25
var m = {a:20};
return f.call(m,n); //通过 call() 或 apply() 方法调用一个函数时,只是传入了参数而已,对 this并没有什么影响
}
}
console.log(obj.b(1)); //11
console.log(obj.c(1)); //11 //f.call(m,n);如果n=5则输出15