Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据

001面向对象


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学习----全局变量

精华推荐