001面向对象
日期: 2020-12-14 分类: 跨站数据 831次阅读
001
添加大概内容:
一、面向对象的思维特点
1.抽取对象共有的属性和行为,封装成一个模板(类)
2.对类进行实例化,得到类所对应的具体对象
3.面向对象即不断的基于类创建对象,指挥对象做事情
二、对象和类
1.对象
指具体的事物,由属性和方法组成
特征=>属性,行为=>方法
2.方法
使用class关键字进行声明,是一种泛指,对类进行实例化即可得到对象
三、创建和实例化类
1.创建一个类
创建类名为Student的类。
constructor为构造函数,当使用new构造一个对象时自动调用,如果不写,系统内会自动生成一个。
this指向当前所声明的对象,即m。
class Student{
constructor(name){
this.name = name;//前一个name是类中的属性,后一个name是传入的实参
}
}
//实例化,利用类得到对象
var m = new Student('小明');
console.log(m.name);
2.类中添加方法
写了read方法,之后使用m.read(‘对应实参’)进行调用。
注意函数与函数之间不需要逗号隔开,不需要function等关键字。
class Student{
constructor(name){
this.name = name;
}
read(book){
console.log(this.name + '读'+book);
}
}
//实例化,利用类得到对象
var m = new Student('小明');
m.read('三国演义');
3.类的继承
使用extends进行继承。
class Student{
constructor(name){
this.name = name;
}
read(book){
console.log(this.name + '读'+book);
}
}
class GoodStudent extends Student{
}
//实例化,利用类得到对象
var m = new GoodStudent ('小明');
m.read('三国演义');
m.read('三国演义');
ps.当第二次执行m.read时控制台不显示,应该是浏览器识别到两段代码含义相同只执行一次
3.super
继承中,输出方法先看子类有没有,就近原则。
super可以认为就代表父类,为了调用父类的方法,需要将子类中的变量传递至父类中。
下面代码中,super(name)不写会报错,且super(name)需写在this.name之前。
class GoodStudent extends Student{
constructor(name){
super(name);
this.name = name;
}
}
4.注意事项
1.代码中类的定义必须在实例化之前。
2.在使用共有的属性和方法(就是constructor中定义的属性和方法)的时候,需要加this.xxx
3.this的指向性问题
var that;
class Student{
constructor(name){
that = this;
this.name = name;//这里的this指向的是实例化的对象m,因为m调用了constructor这个方法
this.btn = document.querySelector('button');
this.btn.onclick = this.read;
}
read(){
//console.log(this.name+'读书');//这里的this指向的是btn因为btn调用了read方法
console.log(that.name+'读书');//因此应该改为that
}
}
var m = new Student ('小明');
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
上一篇: 会话跟踪技术(解析)
下一篇: python学习----全局变量
精华推荐