最近做一个webAPP项目,需要大量写JS代码,以前写JS,由于也没啥功能,基本就是面对过程编程,没有对象的概念,写代码多了,感觉这么写重复代码特别多,也不好维护,于是研读下面的书
读后感觉以前代码,真是乱及了,而且感觉到现在我也不敢说我很精通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定义的方法其实本质上都是类型,每个类型构造器等于他本身,而函数名本质上只是将这个对象的指针赋予给函数名。
转载于:https://blog.51cto.com/jacksongblack/1339085