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(); // 吃老鼠
这个路程真的是路漫漫其修远兮啊,以后的还要抓紧好好掌握并熟练应用吧。。。