數組和對象應用
---》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