美文网首页
面向对象编程

面向对象编程

作者: 3hours | 来源:发表于2017-04-11 21:17 被阅读0次

    1. 面向过程、面向对象 OOP、函数式编程

    2. 面向对象三大基本特征:封装、继承、多态

    封装: 隐藏内部的变量、实现的细节,暴露调用的接口方法

    document.getElementById/document.getElementsByTagName

    继承:实例化的对象包括了父类所有的属性及方法

    多态:方法中根据传入参数个数的不同,实现不一样的功能

    3. 类/对象

    类是对真实世界事物的一种抽象,一种模型

    对象是类的具例化/实例化,属性【特征】跟方法【行为】的集合

    类是对象的抽象

    纯面向对象编程,要有对象,必需创建一个类

    定义一个Person类

    class Person(name, age, gender) {

    //伪代码

    this.name = name;

    this.age = age;

    this.gender = gender;

    this.code = function() {};

    this.eat = function() {}

    }

    class Male extends Person {}

    var p1 = new Person("Shafee", 20, "male");//实例化

    4. arguments 函数内部的隐含对象,包括了调用参数的类数组对象

    5. JavaScript 没有类的概念,基于原型的继承,class在ES6之前是保留字,ES6关键字

    6. 原型prototype、对象、构造函数

    对象:属性跟方法的集合,属性是静态的数据,方法即行为,操作数据

    构造函数:在函数的前面出现new关键字,js内置的构造函数,Date/Object/RegExp/String/Number/Boolean/Function

    自定义构造函数:按照约定,首字母大写,跟普通函数区分

    调用: new Person() 返回实例对象

    var o = new Object();

    Object.prototype  === o.__proto__

    原型prototype、对象、构造函数关系

    对象是由构造函数创建,实例化的,字面量赋值,语法糖

    对象的属性/方法的查找,a.先从自身查找,找到返回,b.找不到沿着原型链上查找,找到返回,找不到重复b步骤,直到顶级Object.prototype

    7. 原型扩展方法

    String.prototype.trim  去掉首尾空格

    String.prototype.capticalize 首字母大写

    Date.format("/")

    8. 使用面向对象编程思维重写Tab切换

    a.定义构造函数,并确定实例拥有的属性

    b.给原型添加行为,即方法

    c.实例化对象

    //////////////////////////////////////////////////////////////第二天

    1. 构造函数、原型、实例三者之间的关系

    构造函数:函数调用前存在关键字new的

    a.定义,为了跟普通函数区分,按照约定首字母大写

    b.调用时使用关键字new

    c.返回值,创建出来的实例

    d.内部的this,指向创建出来的实例

    函数定义,必存在prototype属性,指向原型

    原型:属性跟方法的集合,也是一个对象[__proto__]

    实例:通过构造函数创建出来的对象

    必存在属性__proto__,指向原型,对象属性的查找,先从自身查找,找不到,沿着原型链从原型查找...

    换句话说,对象的属性跟方法从原型上继承下来,对象的属性、方法可以重写

    2. 对象的复制

    for...in 遍历对象,找出自身的属性,且会搜索原型,即也会查找原型上的属性

    __proto__不可枚举的属性

    obj.hasOwnProperty() 返回布尔值,判断对象的属性是否自有/自身属性

    JSON.parse(JSON.stringify(o1)) 可以将只有属性/不存在方法的对象复制

    JSON.stringify 将对象转换成字符串,转换的过程,会忽略掉方法

    3. instanceof 判断对象是否是构造函数的实例,是返回true,否返回false

    obj instanceof Object

    1. review

    obj.hasOwnProperty(name)  判断属性name是否obj对象的自身属性

    for...in 遍历对象/数组

    o1 instanceof Object 判断实例对象o1是否为Object所创建的实例

    jQuery 仿写

    homework:JS中没有类的概念,JS中的继承是基于原型链的。请以原型继承以及构造函数组合来实现创建一辆小车,车包含的属性有name,price,speed。继承的方法包含drive(),stop()以及fly()

    相关文章

      网友评论

          本文标题:面向对象编程

          本文链接:https://www.haomeiwen.com/subject/sgauattx.html