首页 > 代码库 > 初级面向对象

初级面向对象

  面向对象,看到这四个字很多人就会说了,“没有对象怎么面对”,我想说,没关系的,既然没有对象那咱们就来创建一个对象给自己。

  面向对象是利用对象进行编程的一种思想(Object-oriented programming,缩写:OOP)

  有句话说得好“类是对象的抽象, 对象是类的具体”,看到这句话不理解没关系,但至少我们知道了类是抽象的,对象是具体的。

  看图你就能理解:

类(抽象)  对象(具体)
杯子 我的这个杯子
联想电脑  我的这台联想电脑

  对象里有属性和方法

  那如何创建一个对象呢?有以下几种方式

  方式1: 使用new关键字

  例如:var obj = new Object();//这样就创建了一个名为obj的对象

       obj.name = "张三";//给对象添加属性

     //给对象添加方法(函数)

     obj.run = function(){
                console.log("跑步...");
             }

      obj.run(); //调用函数

   方式2:使用字面量的方式创建对象并赋值
            var obj = {
                name: "李四",
                run: function(){
                    console.log("跑步......");
                }
            }

    //打印属性

    console.log(obj.name); //李四
            console.log(obj["name"]); //李四
            obj.run();//调用函数

  

  但如果要创建很多个对象的话为了减少重复代码,对上述代码进行封装

  也称:封装工厂函数

  例如:

  function student(name,age,gender){//封装一个函数

    var obj = {};

    obj.name = name;

    obj.age = age;

    obj.gender = gender;

 

    }

  调用函数生成对象:

  var s1 = student(‘张三’,18,‘男’);

  console.log(s1)//打印出s1得到一个对象

 

  自定义构造函数

 function Student(name, age){
      this.name = name;
      this.age = age;
  }
  var s1 = new Student("王铁锤", 18);
 构造函数与普通函数的区别在于它们的调用方式不同

  这种方式调用构造函数实际上会经历以下4个步骤:

  1. 创建一个新对象( 在内部隐式调用了new Object() );
  2. 将构造函数的作用域赋给新对象(把this绑定到实例对象);
  3. 执行构造函数中的代码(为这个新对象添加属性);
  4. 返回新对象。
  那如何用代码来描述一个对象
  比如描述一个人:
       // 1、创建一个person构造函数
        function Person(opt){
            // 描述一个人
            // 这个人有什么,能做什么
            this.name = opt.name;
            this.age = opt.age;
            this.gender = opt.gender;

            // 肤色
            this.color = opt.color;
            this.fat = opt.fat;
            this.glasses = opt.glasses;

            // 能做什么
            this.eat = function(){
                console.log(this.name + ‘是吃货‘);
            }

            this.sleep = function(){
                console.log(this.name + ‘睡觉睡到自然醒‘);
            }

            this.coding = function(){
                console.log(this.name + ‘说:不熬夜的程序猿不是好的吃货‘);
            }
        }

        var p1 = new Person({name:‘老王‘,age:40,gender:‘男‘,color:‘黄色‘,fat:false,glasses:true});//传参数
        console.log(p1);//打印出这个对象

        p1.coding();//调用函数
  
  

  this

  this作为JS的关键字,有特殊的含义,代表了当前对象,而当前对象是谁,由函数执行时所处的环境来决定

  this好比一句话, 出自不同人之口, 代表的人就不一样

  如A和B吵架:
  A对B说: “老子要砍死你! ” , 这里的老子指A
  B对A说: “老子要弄死你! ”, 这里的老子指B

  用new关键字执行:this指向生成的实例对象

  普通函数执行:this指向调用函数的对象

  用new关键字执行:this指向生成的实例对象

  感觉有点偏题了,希望大家能看得懂,码农们继续加油吧!!

  技术分享

  

初级面向对象