美文网首页
面向对象

面向对象

作者: 007_2278 | 来源:发表于2018-02-09 11:26 被阅读13次

    知识点

    • 类和对象的概念
    • 创建对象
    • 原型
    • 字面量形式创建对象

    类和对象的概念

    • 类 : 是一种抽象的数据类型,是描述事物的概念;类是抽象的
      • 那么通过哪些东西描述类的概念了,即:属性,行为
    • 对象 : 是实际存在的;对象是类的实例化
    • 类和对象的关系:通过类概念的描述实例化出实际存在的对象

    创建对象

     var stu1 = new Object();
     stu1.name = "hello word";
     stu1.age = 18;
     stu1.eat = function() {
      alert("我很能吃");
     }
    
    • 构造函数创建(其实就是个普通的函数)
    //构造函数(驼峰表示命名法) 
      function CreateAnimal(name,age) {
        this.name = name;
        this.age = age;
    
        this.sleep = function() {
          alert("睡觉");
        }
      }
      var daxiang = new CreateAnimal('大象',100);
      daxiang.sleep();
    
      var dog = new CreateAnimal("单身狗",30);
      alert(dog.name);
    

    原型

    • 原型编程 是 面向对象编程 的一种类型。它的 类 没有明确的定义,只是通过向其它的类中添加属性和方法来得到它,甚至偶尔使用空对象来创建类。
    • 原型的作用 : 保存,共享 相同的代码(对象属性,行为)
    • 访问原型的两种的方式:
      • 1.构造函数的名字.prototype
      • 2.对象.proto
      CreateAnimal.prototype.sleep = function() {
        alert("相同睡觉方法");
      }
      var daxiang = new CreateAnimal('大象',100);
      console.log(daxiang);
      console.log(daxiang.__proto__);
      console.log(daxiang.__proto__.sleep);
    

    原型相关知识点

    • 通过原型创建 所有对象 都共享的属性
    • constructor : 构造属性, 获取创建对象的构造函数
      console.log(tea1.constructor);
      
    • isPrototypeOf:判断对象是否指向该构造函数的原型对象
      alert(Teacher.prototype.isPrototypeOf(tea1));
      
    • hasOwnProperty

    //判断对应的属性 是在原型中 还是在实例中

    console.log(tea1.hasOwnProperty('age'));
    console.log(Teacher.prototype.hasOwnProperty('age'));
    

    字面量形式创建对象

    • 通过字面量的形式 给原型对象赋值
    Person.prototype = {
          name:"小明",
          age:15,
          run:function () {
            alert("run");
          },
          //constructor:Person
        }
    
    • 通过字面量创建的对象 方式 没有 constructor
    • 重写原型对象
    • 内置原型 添加新的方法
        var str = new String();
        String.prototype.addstring = function() {
          return "我们放假了";
        }
        console.log(str.addstring());
    

    相关文章

      网友评论

          本文标题:面向对象

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