我总是东学西看,也不按照顺序。再次特意记录一下,以方便日后复习。
学了忘,忘了学,学了还得忘。
忘了学,学了忘,忘了还得学。
2021.11.21
循环:
for in 适用于对象。
let obj = { a: '1', b: '2', c: '3' } //对象
let arr = ['aa', 'bb', 'cc'] //数组
for (const key in obj) {
//for in循环对象的key值
if (obj.hasOwnProperty(key)) { //如果对象中有key这个属性 => true (原型函数)
const value = obj[key]; //value = obj['key']
console.log(value); //输出value
}
}
for (const index in arr) {
console.log(key); //for in 循环数组的index值
}
for of 适用于数组。
for (item of arr) {
console.log(item);
//输出数组每一项元素。
}
等价于
arr.forEach(function(item,index,array){ //(元素,下标,原数组)
console.log(item)
})
为什么要克隆数组:
let arr1 = [1,2,3,4];
let arr2 = arr1;
//意味着只有一个arr1,只不过arr2的指针也指向arr1数组,更改arr2同时也将改变arr1
console.log(arr1); //1,2,3,4
arr2.reverse() //反转数组
console.log(arr1); //4,3,2,1 arr1也被反转
console.log(arr2); //4,3,2,1
克隆数组:
let arr = [1,2,3,4]
arr1=
arr.slice() //完全的截取
arr.splice(0) //不删不添加元素
[...arr] //[...[1,2,3,4]]
其他的没写。我觉得够用了。
this:
谁调用,指向谁。
全局调用就指向window,
function gh (){
console.log(this)
}
gh() //=== window.gh() 指向windows
gh.gh() //如果gh()是对象gh中的一对key:value,指向gh
gh.bind(o) //bind(谁) 指向谁
gh.call(this,arg1,arg2)
gh.apply(this,[arg1,arg2])
call和apply 第一个参数都是,你想要this指向的对象,arg就是gh(arg1,arg2)中的参数。
proxy代理
// 创建了一个对象,将来被proxy代理
let person = {
name: '刘德华',
age: '33'
}
// 创建了一个对象,当通过代理访问目标对象时,此对象中的对应
// 方法会执行
let handler = {
get(target, prop) {
//target => person
//prop => pesson.key
return target[prop]
}
}
// 创建代理,指定代理对象和代理对象操作对象
let py1 = new Proxy(person, handler)
console.log(py1.name); //刘德华
console.log(py1.age); //33
vue router
{path: "/main1",
//在/main1路径。
components: {
default: main1,
//未命名的view显示的main1组件
foot: main2,
//name:foot的view显示main2组件
}}