第一模块:
课程名称:直面JavaScript中的30个疑难杂症
章节:8-1~8-2
讲师名称:公明2020
第二模块:
在 ES6中,class (类) 作为对象的模板被引入,可以通过 class 关键字定义类。它可以被看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。而其本质就是一个函数,就是由ES5里面的语法封装的
// 类中所有函数均不需要写function,且多个函数方法之间不需要添加符号分隔; class Person { constructor(name, sex, age) { this.name = name; this.sex = sex; this.age = age; } // 类中添加方法 Say() { console.log('我叫' + this.name, '性别' + this.sex, '今年' + this.age); } } // 创建实例对象 var xm = new Person('王明', '女', 24); // 通过实例调用方法 xm.Say(); // 我叫王明 性别女 今年24
对象:万物皆对象
类:对象中细分的类型
实例:某类中实实在在的事物(具体的事物)
ES5中类叫构造函数 ES6中 class 才叫类
JS中的内置类:
Number String Boolean Null Undefined Object Array RegExp Date Functon 小写叫数据类型
Number String Boolean 包装类
var num = 10;//可以操作的具体的事物 实例 属于Number类 var str = 'abc';//String类的实例 var num = new Number(10); //Number{10} 对象10 num = num.valueOf(); //10 基本数据类型 var ary = new Array(10);//参数是数值 表示数组长度 var ary = new Array('abc');//表示数组中有一项是abc var ary = new Array(10, 20);//超过两项 表示数组有两项10,20
自定义类
为了和普通函数区别:首字母要大写
function Person(){ //为了和普通函数区别:首字母要大写 //1.创建对象(系统自己创建) //2.给对象添加属性(对象用this来表示) this.name = 'Lily'; //this称为实例 this.age = 20; this.writeCss = function () { console.log('writeCss'); } //3.返回对象(系统自己返回) } //Person();//这样运行--->Person就是普通函数,this指的是window var p1 = new Person(); //通过new运算符运行的函数称为构造函数 称为Person构造函数(Person类) p1指的是返回的对象 也就是Person类的实例 var p2 = new Person(); console.log(p1, p2);
总结:1.若不需要传参,小括号可以省略
2.this指的是实例,跟this.xxx有关,跟私有变量无关
3.只要在构造函数中定义的属性,都是实例私有的属性(有实例都要用的功能公有的功能不能把他放在构造函数里,放在原型上)
4.return不用写。若必须写,return后面跟基本类型数据,对return没有影响,return后面跟引用类型的数据会把实例覆盖
第四模块: