面向对象

来源:互联网 发布:数据库输入数据语句 编辑:程序博客网 时间:2024/06/03 19:49
面向对象
关键字this:一个临时变量,不具体只代表谁;★★★★★★调用对象是谁就代表谁(动态指定);
构造函数:★★★★★
用来构造(创建)对象的函数
注意:
① 构造器的名字首字母一定要大写;
② 使用构造器创建对象的时候需要添加关键字new;
如: 构造函数function(){}
通过构造函数实例化(创建、构造)一个对象
new Person();
原型:
① 是类里面的一个共享空间
② 可以在这个共享空间中添加一些公共的(只要通过这个类创建的都可以访问)属性和方法;
③ 所有对象访问的这些属性和方法都存在内存的同一个地址中
④ 存放对象、存放数组时,一个对象中数组里面的内容被删除或者添加,其他的也会跟着删除或添加;
原型继承
改变原型对象->所有通过这个类创建出来的对象,都会具备改变原型对象
例子:
function Person() { }
var obj = {name:"小明"}
Person.prototype = obj
Person是一个类,改变Person的原型对象为obj,所有通过Person创建出来的对象,就具备了obj里面的特征(name=小明)
如果改变Person原型对象为另一个类实例化的对象,他就会具备另一个类的特征;
例子:
    function Animal() {
    this.type = "动物";
    }
    function Person() { }
    Person.prototype = new Animal();
这个时候Person类会具备Animal里面的特征(type=动物);
命名空间
给自己所有的类、函数、变量添加一个统一的入口;避免命名冲突,自己的文件好找;
公式window.nameSpace = window.nameSpace||{}
回调函数:也是一个函数,只是把函数当成了参数;
意义:当执行某个函数的时候,符合了某个条件会返回去,调用传过来的函数主要用于监听某个事件什么时候执行完             毕;
基本概念function loadData(){ };
函数名:是函数的名字,代表的是整个函数,函数名是loadData;
调用函数:执行函数体里面的代码
loadData( );

绑定bind可以绑定外面的this,函数里面的this都表示绑定的this;
this:
✭✭✭✭✭✭谁调用  this 就表示哪个对象
1. 普通函数里面  没有任何调用这个函数的对象(没有this的指向)->这里面的this表示的是 window对象
2. 在构造函数里面 this表示 即将被实例化出来的对象;
Call/apply:
都可以改变this的指向,同时调用了指定的函数
区别: ① Call:只能一个个传参;   ② Apply:只能传数组
使用环境:子类构造函数中的参数传递到父类里面,同时更改父类的this指向

继承
多重继承:Student -> Person -> Animal
__proto__:都表示原型对象 调用的方式不一样 对象名调用xiaoming.__proto__
prototype:都表示原型对象 使用类名调用 Student.prototype
Function.prototype.jiCheng = function (sup) {
        var prototype = Object.create(sup.prototype);
        prototype.constructor = this;
        this.prototype = prototype;
};
原型链

子类和父类的原型关系
如:学生类 继承  人类  ->人类 继承 动物类 ->动物类继承Object(最底层的类)
学生类的对象查找某一个属性,会先从自己的原型对象去查找,如果没有就从他的父类去查找;
找到->找到的结果
没有找到->unfined
Setter
Getter
可以读取或者设置类里面的私有属性
类的静态方法(类方法)
使用类名调用
好处:节省内存(不需要实例化对象去调用);
使用环境:工具类,不需要使用this的方法
原创粉丝点击