码迷,mamicode.com
首页 > 其他好文 > 详细

面对对象的程序设计初探总结

时间:2016-04-27 22:44:05      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

对象概念:对象就是无序属性的集合

prototype:这个属性是指针,指向一个对象。通过调用构造函数对象而创造的对象实例的原型对象。

主要几个类型用法

一.工厂模式

 (空对象,Object是所有对象的祖先)
   
  var obj = new Object();

  console.info(obj);
  obj.name = "flash boy";

  console.info(obj);
 
  function createPerson(name) {
   var o = new Object();
   o.name = name;

   return o;(o这个变量存了一个地址,把地址返回给p)
  }
  var p = createPerson("洋洋");

  console.info(p);


二.构造函数

  function Student(name) {
   this.name = name;
  }
  var stu = new Student("张三");
——————————————————————————————————————————————————————————————————

 工厂模式和构造函数的区别:
 1.首字母小写
 2.函数中没有使用this
 3.使用的时候没有用new
——————————————————————————————————————————————————————————————————

三.构造原型方式(套路)

  function Student(name) {
   this.name = name;
  }
  Student.prototype.study = function() {
   console.info(this.name + "");
  }

  var stu = new Student("");
  stu.study();
——————————————————————————————————————————————————————————————————
  创建类
  1.属性全部放在构造函数里面
  2.方法写在外面(prototype)
——————————————————————————————————————————————————————————————————

四.借用构造函数

 function People(name, age, sex) {
   this.name = name;
   this.age = age;
   this.sex = sex;
   this.sleep = function() {

   }
  }
  People.prototype.study = function() {

  }
  
  function Student(name, age, sex) {
   
   
   People.call(this, name, age, sex);
  }

  var stu = new Student("张三", 23, "女");
  console.info(stu.name);
  console.info(stu);
——————————————————————————————————————————————————————————————————
    People:构造函数
    call():调用People,相当于People()
    this:this表是该引用本身(我)
——————————————————————————————————————————————————————————————————
五.原型模式

  function Person() {

  }
——————————————————————————————————————————————————————————————————
  运行完以上代码后,相当于执行了一个Person.prototype = new Object();

  
   prototype是Person函数对象的属性,
   它指向了一个对象(就是一个引用),
   它指向的这个对象中的所有的属性跟方法,是每个实例所公用。
——————————————————————————————————————————————————————————————————  
  Person.prototype.name = "name";
  Person.prototype.age = 18;

  var p1 = new Person();
  var p2 = new Person();

  console.info(p1.name);
  console.info(p2.name);
  console.info(p2.age);
  
六.原型链(重要)
利用原型让一个引用类型继承另一个引用类型里的属性和方法。

 父亲
  function Father(name) {
   this.fatherName = name;
  }
  Father.prototype.age = 18;

  var ft = new Father("父亲");
  console.info(ft.age);
  console.info(ft.fatherName);
——————————————————————————————————————————————————————————————————

 儿子
  function Son(name) {
   this.sonName = name;
  }
  Son.prototype = new Father();

  //每一个对象的_proto_都来自于构造函数的prototype属性
  var sn = new Son("儿子");
  console.info(sn.age);
  console.info(sn);
七.原型链继承(重要)
继承的好处是:复用代码

  function Person(name) {
   this.name = name;
   this.sleep = function() {

   }
  }

  function Student(name) {

  }
  //下句代码表继承
  Student.prototype = new Person();

  var stu = new Student();
  stu.sleep();
——————————————————————————————————————————————————————————————————
1.普通对象都有_proto_

2.函数都有prototype

3._proto_是来源于prototype

4.如果自己没有该属性,则沿着_proto_往上找
———————————————————————————————————————————————————————————————————
八.组合继承(套路)

  function Father(name) {
   this.name = name;
  }
  Father.prototype.lookBook = function() {
   console.info(this.name + "在看书");
  }

  function Son(name, age) {
   //继承属性,继承不了prototype的东西
   Father.apply(this, [name, age]);//或call
   this.hobby = "打游戏";//这个写在哪里都无所谓
  }
  //继承方法method
  Son.prototype = new Father();
  //新的方法必须写在继承之后
  Son.prototype.playPiano = function() {

  }

  var son = new Son("李四", 22);
  son.lookBook();

面对对象的程序设计初探总结

标签:

原文地址:http://www.cnblogs.com/wangshuaiF26/p/5440525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!