面向对象:
var 学员资料=new Array()
var 某某人=new function(){
this.name="张三"
this.身高=1.8
this.发型="小平头"
this.入学=function(){学员资料[学员资料.lenght]=this}
}
document.write ("名字:"+某某人.name +"|身高:" + 某某人.身高+"|发型:"+某某人.发型)
那么就得到 某某人的具体信息
而且采用:
某某人.入学() 这个就是直接登记到学员资料中去了,不需要通过其他函数和复杂的步骤
我认为优点在于
1:直观性
采用 . 表示 "的" 的意思,可以表示下属成员 所含内容 ,甚至可以用 .parent 来表示对 父对象的引用
2:易用性
对象存在,内存中的变量也存在,不需要中间变量
可建立方法函数在内置函数中,内置函数的变量和方法函数的变量是临时的,不产生名称冲突
执行自身的方法,不需要额外的函数
3:扩展性
可以用对象的方式建立自定义的功能组件
类似Math这样的对象,这类对象具备自己的属性方法,在执行自定义方法中可以直接修改可能涉及关联的变量和自身的属性,而不需要像普通函数一样每次都可能要提取一定条件的变量,根据不同条件书写不同的函数
4:系统性
采用整体设计思路,形成系统对象或对象系统,可以方便的管理程序,页面元素,等等非常复杂的结构
简单的说,对象就是一个思维概念体
这个"体" 你能想到什么就建立什么
如果它是一个书本,你可以建立一个 this.翻页() 方法, 翻页中可能产生数据的变动 直接写在function中了
执行它, 他就翻页,相关数据的变动 就不需要管了,它的输出可以是一个对象,或者一个数组
换成普通函数,同样一个函数,就要调用很多变量,如果达到输出同样数据集的目的,那么还要设定一个集合变量
会很冗余
面向对象我理解就是这些
达到所见即可得,所建即可用的目的
,
我来说一说:
你所说的减少内存资源是一个明显的好处之外,另外还有一个不可忽视的好处,那就是代码分类明确。
这使得你在日常使用和修改的时候,能够快速便捷地找到你或别人开发的代码所在位置,以及方便地予以调用。
同时,由于JavaScript就本身而言,就是一个“对象型语言”,专业点说就是“面向对象”的语言种类。
它处处都是对象,一个字符串都是对象,比如下面的代码:
var re = "fdsa".replace("a", 'aaa');
alert(re);
输出:
fdsaaa
哦呵呵,是不是很有意思?
这个"fdsa"怎么它就拥有一个replace的方法呢?为什么?怎么这么奇怪?
没错,它就是一个对象,这个字符串本身就拥有replace方法,从而我们可以直接调用它。
然后我们再来看下面的代码:
//给JS内置的String类添加一个turn方法,这个方法是反转字符串
String.prototype.turn = function(){
var arr=[];
var str = this.toString();
var p=str.length-1;
for(i=0; iarr[p]=str.charAt(i);
p--;
}
return arr.join('');
}
//一个字符串,就拥有了turn方法,以后我们只要调用这个方法,就可以翻转字符串了!!
var re = 'fdsa'.turn();
alert(re);
输出:
asdf
很神奇吧?
可是,就算是这样的话,JS的对象对象编程所带来的好处还是没有完全讲明白,我们再举一个例子:
我们只要这样定义一个对象:
//定义一个名为obj的对象
var obj = {
//对象中的方法
al:function(str){
alert(str);
},
trun:function(str){
var arr=[];
var p=str.length-1;
for(i=0; iarr[p]=str.charAt(i);
p--;
}
return arr.join('');
}
};
var re = obj.trun('fdsa');
obj.al(re);
弹窗提示:
asdf
同样,这个obj对象可以使用prototype来为其增加或修改属性和方法;
那么,当我们要建立一个“很大很大”的一个库,里面有各种类型的数据处理所需要的方法、属性等,这个时候,我们如果想起什么就写一个function,那么当我们这个文件达到几百KB的时候,你会发现,乱就一个字啊,找个函数是怎么写的来着?拉滚动条,找不到,然后用替换查找...
嗯,什么时候我们忘了曾经定义过一个变量或者一个function了,然后我们在里面又写了一个,突然控制台提示:“JavaScript”错误.....
可是,当我们从一开始,就对我们要写的这个“大的JS文件”进行分类整理,按照各种功能也行,各种类型分类也行,然后我们就像用一个主目录里有子目录一样,顺藤摸瓜地找到他们,还找不到?那说明你不会JS了。
这就像C++中的封装与集成一样 前者相当于定义了一个类 具有通用型 后者也定义了类 但是每次在调用时都会重新定义 分配内存空间
基本上没区别,我更喜欢 var obj = {"name":"123","age":"16"}这种