javascript-面向对象编程思想的学习(1)

javascript-面向对象编程思想的学习(一)

        在学习过程中我们需要用到js的面向对象的编程,所以需要从头学起,整理一些js中面向对象的资料

     Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,记录以下一些方法:

一、直接定义

我们把猫看成一个对象,他有名字和年龄两个属性

var Cat = {
	name = '';
	color = '' ;
}

 

 

 下面生成两个对象

 

 

 

var cat1 = {}; // 创建一个空对象
    cat1.name = "大毛"; // 按照原型对象的属性赋值
    cat1.coler = '黄色';
var cat2 = {};
    cat2.name = "二毛";
    cat2.color = '红色';

 二、构造函数模式

       为了解决从原型对象生成实例的问题,js提供了一个构造函数(constructor)模式。所谓构造函数就是一个普通函数,但是内部使用this,对构造符使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。

那么猫的原型对象就可以写成:

function Cat(name,color){
    this.name=name;
    this.color=color;
  }

 猫的实例对象就是

 var cat1 = new Cat("大毛","黄色");
 var cat2 = new Cat("二毛","黑色");
 alert(cat1.name); // 大毛
 alert(cat1.color); // 黄色

 三、Prototype模式

       js中规定每个构造函数都有一个prototype属性,只想另一个对象。这个对象的所有属性和方法,都会被狗仔函数的实例继承这意味着,我们可以把那些不变的属性和方法直接定义在prototype对象上。

猫的原型对象就可以这样

function Cat(name,color){
    this.name = name;
    this.color = color;
  }
  Cat.prototype.type = "猫科动物";
  Cat.prototype.eat = function(){alert("吃老鼠")};

生成实例

var cat1 = new Cat("大毛","黄色");
  var cat2 = new Cat("二毛","黑色");
  alert(cat1.type); // 猫科动物
  cat1.eat(); // 吃老鼠

 这个路程真的是路漫漫其修远兮啊,以后的还要抓紧好好掌握并熟练应用吧。。。