JavaScript对象探讨
:2015-06-13 11:48 阅读数:
分享到:
由于JavaScript的灵活性,可以让每个人按照自己的习惯进行编写代码.有函数式的编程方式,也有现在用的较为广泛的对象字面量.由于面向对象的出现,JavaScript刚开始的函数编程也逐渐演化为类式编程方式.现在我对几种比较熟悉的编程习惯进行简单的说明:
1.对象字面量:
以下为引用的内容: var person = { name:null, setName:function(name){ this.name = name; return this.name; }, getName:function(){ alert(this.name); } } |
具有JavaScript特色的一种编程方式,以类为单位含有属性name,方法setName和getName.调用方法比较简便person.setname(''R''),this由此至终均指向person,person的属性与方法均不私有,可以进行调用.
2.prototype构造器调用模式
以下为引用的内容: var Person = function(){ this.name = null; } Person.prototype.setName = function(name){ this.name = name; } Person.prototype.getName = function(){ alert(this.name); } |
也是很常见的编程方式,创建一个Person类,然后利用prototype对类进行扩展,添加方法.与对象字面量最大区别在于,调用该类的方法时,必须先new(跟Java调用类相似).var p = new Person();p.getName();如果不用new,而直接创建,会产生错误.而且这种错误将不会报错,难以发现.错误的产生原因来自于this指向Person.prototypel,而Person并没有setName方法.
3.利用匿名函数进行函数编程
以下为引用的内容: (function(){ var name; var setName = function(n){ name = n; } window[''person''][''setName''] = setName; var getName = function(){ alert(name); } window[''person''][''getName''] = getName; })() |
类的出现,其中一个最大的好处就是降低了全局变量的出现,但是如果你依旧习惯于函数式编程,没关系,只要创建一个匿名函数,进行闭包,就可以再里面进行函数编程,也不需要担心全局变量的出现.如上所看到的var name;在匿名函数外部是无法调用的,然后利用外部的变量来调用内部的函数,或者是变量.可以借此创建私有变量和私有方法.