以前我就简单的看过一点javascript,对javascript的印象就是一对散落在html里的脚本,没有调试器,杂乱无章。当出现AJAX时,我一直在想,那么多js代码怎么编写和维护啊!后来看了一些关于AJAX的书籍,才知道在浏览器端用AJAX也可以实现MVC!当然实现mvc必然是oo 思想啊,所以才注意到javascript支持面向对象!下面做简单的介绍!
fucntion Person()
...
{ //我们都知道这是一个函数,其实他也可以是类 }
function Person(pname, psex, page) { this.name = pname; this.sex = psex; this.age = page } var p = new Person("xiaowang", "man", 18); alert(p.name + " " + p.sex + " " + p.age);
这样function Person就是个类了,他拥有成员变量!注意!一定要用this.成员变量,否则就成了本地变量了
function Person就成了构造函数
当然也可以往对象里加入成员函数
function
Person(pname, psex, page)
...
{ this .name = pname; this .sex = psex; this .age = page this .showinfo = function si() ... { alert(p.name + " " + p.sex + " " + p.age); } }
var
p
=
new
Person(
"
xiaowang
"
,
"
man
"
,
18
); p.showinfo();
showinfo就是其中的一个成员函数,从定义可以看出,showinfo就是个变量引用了一个函数,由此可以猜测一下js的实现!
还有另一种创建对象的方法,可以说是运行中创建,就是使用prototype,prototype里面的变量或方法,是所有对象共享的。
function
Person(pname, psex, page)
...
{ this .name = pname; this .sex = psex; this .age = page this .showinfo = function si() ... { alert(p.name + " " + p.sex + " " + p.age); } }
var
p
=
new
Person(
"
xiaowang
"
,
"
man
"
,
18
); p.showinfo(); Person.prototype.newFun
=
function
()
...
{ alert( this .name + " new member function " ); }
var
p1
=
new
Person(
"
xiaoli
"
,
"
woman
"
,
20
); p1.showinfo(); p1.newFun(); p.newFun();
使用prototype创建成员变量的方法类似,这在运行中就可以添加成员。
看来javascript中的函数都是通过引用调用的,倒是个不错的实现oo的方法
实现名字空间的方法:
var
myspace
=
new
object();
//
创建一个名字空间
myspace.something;
//
在名字空间加东西
设置静态常量的方法:
Person.MAX_AGE
=
110
; Person.MIN_AGE
=
0
;