Javascript 面向对象编程—封装

  前  言

 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。面向对象主要专注于有哪一个对象来解决这个问题,编程特点时出现一个个的类,从类中拿到对象,有这个对象去解决具体问题。 对于调用者来说,面向过程需要调用者去实现各种函数。而面向对象,只需要告诉调用者对象中的具体方法的功能, 而不需要调用者了解方法中的实现细节。

 而面向过程主要专注于如何去解决一个问题的步骤。编程特点是由一个个的函数去实现每一步的过程步骤,没有类和对象的概念。

1、 生成实例对象的原始模式

1.1我们把人看做一个对象,人有"姓名"和"年龄"两个属性。

 var Person={

       name : "张三",

       age : "12"    

 }

1.1我们根据这个原型对象的模式,生成两个实例对象。

  var Person1= {}; // 创建一个空对象
         Person1.name = "张三"; // 按照原型对象的属性赋值
         Person1.age= "12";
  var Person2= {};
         Person2.name = "李四";
         Person2.age= "15"; 

 //这就是最简单的封装了,把两个属性封装在一个对象里面。       
2、 原始对象模式的改进
  function Person(name,age) {
     return {
       name:name,
       age:age    
            }
  }

  var Person1= Person("张三","12");
  var Person2= Person("李四","15");
3、 构造函数

构造函数:其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。

 //人的原型对象
  function Person(name,age){
     this.name=name;
     this.age=age;
  }

 //生成实例对象
  var Person1= new Person("张三","12");
  var Person2= new Person("李四","15");
  console.log(Person1.name); // 张三
  console.log(Person2.age); // 15

 //Person1 和 Person2都会有一个constructor属性,返回当前对象的构造函数
  console.log(Person1 .constructor == Person); //true
  console.log(Person2 .constructor == Person); //true

 //instanceof检测一个对象是不是一个类的实例
  console.log(Person1 instanceof Person); //true
  console.log(Person2 instanceof Person); //true
4、 Prototype模式

prototype 属性允许您向对象添加属性和方法,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

  function Person(name,age){
         this.name=name;
         this.age=15;
  }
  Person.prototype.age=12;
  var zhangsan=new Person("张三");
  console.log(zhangsan.age);        

编者按

  Javascript面向对象是最难的,初学者不容易掌握,可以多多参考参考专门Javascript面向对象的资料,最后,希望各位和小编一起努力,在前端的路上越走越远!

上一篇:html----h1-6标签


下一篇:如何完全卸载 mysql 数据库