最近做一个webAPP项目,需要大量写JS代码,以前写JS,由于也没啥功能,基本就是面对过程编程,没有对象的概念,写代码多了,感觉这么写重复代码特别多,也不好维护,于是研读下面的书

214819321.jpg

读后感觉以前代码,真是乱及了,而且感觉到现在我也不敢说我很精通JS,本文主要就是讲我在项目中怎么运用JS面对对象编程的。

 其实Javascript其实是门面对对象语言,你使用任何东西,都是对象,但由于他没有实现class 语法,所以掌握起来感觉怪怪的,在JS中将属性(property)与方法(method)集合称为对象。

现在我就将我在项目使用的JS当中类实现方法的一种原型构造模式(prototype模式)代码如

function ClassA(){
 this.name="it,s A"; 
}
ClassA.prototype = {
 f:function(){
alert(this.name)
}
}
var a = new ClassA;
a.f();

这段代码 运行后会弹出 “it's A”,(可以copy下来,粘贴到chrome的F12下的console里面回车)

刚才发生了什么我们下面解释

首先你的明白 在js中,任何function的定义的方法,其实都是一个类型,其中构造函数就是ClassA,你可以运行这些代码

var a = new ClassA;
console.log(a.constructor== ClassA)
//这里你将看到结果为true,前提是前面的classA函数,你得执行
console.log(ClassA.prototype.constructor=ClassA)
//这段有趣代码证明每个类型的prototype属性构造器指向他自己
var b = a;
a.name = "hello"
b.f();

通过上面代码,知道了每个function定义的方法其实本质上都是类型,每个类型构造器等于他本身,而函数名本质上只是将这个对象的指针赋予给函数名。