note.txt
js进阶部分
1 变量及其作用域
全局变量 局部变量 作用域 作用域链
let/var 区别
const 定义常量
2 异步专题
回调函数 同步异步
es6 Promise(使用和手写实现)
3 oop
原型 原型链 面向对象 。。。
es6 class 等
4 闭包
5 面试题
...
note.md
1 变量与常量 var a = 10; var一些问题 * var重复定义 会覆盖 * 没有块级作用域 * 变量会自动提升 es6 let/const * 重复定义会报错 * 具有块级作用域 * 不存在预解析 建议多使用let const定义常量 希望某个值不希望被修改 不能重新赋值
2 javascript是什么 解释执行 预解析 1 全局预解析(所有变量和函数声明都会提升 同名函数与变量函数的优先级高) 2 函数内部预解析
执行
头等函数(First-class Function) 动态 执行环境 浏览器宿主 node 编程范式 基于原型 多范式
3 oop
对象 狭义对象 {} 广义对象 dom元素、Array、Math...... json
{ "name":"along", "sex":"M" }
1let&const.htm
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <title>Document</title>
8 </head>
9 <body>
10 <script>
11 /* var重复定义 会覆盖
12 var a = 10;
13 var a = 20;
14 console.log(a);
15
16 if(true) {
17 var num = 100;
18 }
19 console.log(num); // 仍然可以访问
20 */
21 // let a = 10;
22 // let a = 20;
23 /*
24 for(var i=0; i<3; i++) {
25 setTimeout(()=>{
26 console.log(i);
27 },0);
28 }
29 */
30 /*
31 for(let i=0; i<3; i++) {
32 setTimeout(()=>{
33 console.log(i);
34 },0);
35 }
36 let a = 20;
37 if(true) {
38 let a = 10; // 不会污染全局
39 console.log(++a);
40 }
41 console.log(a);
42 */
43
44 /*
45 console.log(a); // undefined
46 var a = 10;
47 变量提升 变量的声明会提升
48 var a;
49 console.log(a);
50 a = 10
51 */
52 // console.log(a); // 报错
53 // let a = 10;
54
55 const MY_NAME = "along";
56 //MY_NAME = "awei"; // 报错不能重新赋值
57 const arr = ['beijing'];
58 arr.push("shanghai");
59 const obj = {
60 a: 1,
61 b:2
62 }
63 obj.c = 4;
64 console.log(obj);
65 obj = {}
66
67 </script>
68 </body>
69 </html>
2js.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <title>Document</title>
8 </head>
9 <body>
10 <script>
11
12 function a() {
13 console.log(123);
14 }
15 var a = ()=>{
16 console.log(456);
17
18 }
19
20 a();
21
22
23 </script>
24 </body>
25 </html>
3object.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <title>Document</title>
8 </head>
9 <body>
10
11 <script>
12 // 描述一个人 姓名 家庭住址 身份证号
13 var p1 = {
14 name: "zhangsan",
15 address: "北京市海淀区",
16 id:"10212000"
17 }
18 var p2 = {
19 name: "lisi",
20 address: "武汉市",
21 id:"10267400"
22 }
23 console.log(p1.id);
24 console.log(p2.address);
25 // oop
26
27 function Person(name,address,id) {
28 this.name = name;
29 this.address = address;
30 this.id = id;
31 this.printMsg = function() {
32 console.log(this.name,this.address,this.id);
33 }
34 }
35
36 let zs = new Person("zs","beijing","123456");
37 let ls = new Person("ls","shanghai","453456");
38 zs.printMsg();
39 </script>
40 </body>
41 </html>
4creatObj.html
1 <!DOCTYPE html>
2 <html lang="en">
3
4 <head>
5 <meta charset="UTF-8">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <meta http-equiv="X-UA-Compatible" content="ie=edge">
8 <title>Document</title>
9 </head>
10
11 <body>
12 <script>
13 // 1 通过new Object()
14 let country = new Object(); // 空对象
15 country.name = "china";
16 country.population = 13;
17 country.area = "Asia";
18
19 country.work = function () {
20 console.log("hard working");
21 }
22
23 // 2 {} 对象直接量
24 let p1 = {
25 name: "zhangsan",
26 address: "北京市海淀区",
27 id: "10212000"
28 }
29 let p2 = {
30 name: "lisi",
31 address: "武汉市",
32 id: "10267400"
33 }
34 let p3 = {};
35
36 // 3 工厂函数
37 function createPerson(name,address,id) {
38 var o = {};
39 o.name = name;
40 o.address = address;
41 o.id = id;
42 o.study = function() {
43 console.log("学到老 活到老");
44 }
45 return o;
46 }
47
48 let lily = createPerson("lily","America","Aasdf123");
49 console.log(typeof lily);
50 console.log(lily instanceof createPerson); // false
51
52
53
54 </script>
55 </body>
56
57 </html>
5constructor.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <title>Document</title>
8 </head>
9 <body>
10 <script>
11 // new Date() new String()
12 // 构造函数 本质上也是普通函数
13 function Person(name,address,id) {
14 this.name = name;
15 this.address = address;
16 this.id = id;
17
18 this.study = function() {
19 console.log("学习有方法");
20 }
21 }
22 //let p1 = Person("lucy","canada","aui8");// p1 undefined
23 let p1 =new Person("lucy","canada","aui8");
24 console.log(p1 instanceof Person);
25
26 /*
27 构造函数 是希望别人将来通过new方式去调用,通过new方式调用
28 会返回一个对象 所以叫构造函数
29
30 new调用构造函数 内部发生了什么
31 1 实参传给形参
32 2 在内存中创建一个对象 {},并且让函数内部的this执向这个对象
33 3 执行函数体 {name:...,address:...,id:...,study:func..}
34 4 返回这个对象
35 */
36
37 </script>
38 </body>
39 </html>
6构造函数.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <title>Document</title>
8 </head>
9 <body>
10 <script>
11 function Animal(name,type) {
12 this.name = name;
13 this.type = type;
14 this.sleep = function() {
15 console.log("I am sleeping");
16 }
17 }
18 let xiaohua = new Animal("xiaohua","dog"); // 实例
19 console.log(typeof xiaohua); // object
20 console.log(xiaohua instanceof Animal); // true instanceof具体对象的类型
21 console.log([] instanceof Array); // true
22 console.log(xiaohua.constructor); // 构造函数或构造器
23
24
25 </script>
26 </body>
27 </html>