一: 用定义函数的方式定义类
在面向对象的思想中,最核心的概念之一就是类。一个类表示了具有相似性质的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,即对象。
在JavaScript中定义一个类的方法如下:
function class1(){
//类成员的定义及构造函数
}
这里class1既是一个函数也是一个类。可以将它理解为类的构造函数,负责初始化工作。
二:使用new操作符获得一个类的实例
new Date();
表示创建一个日期对象,而Date就是表示日期的类,只是这个类是由JavaScript内部提供的,而不是由用户定义的。
new操作符不仅对内部类有效,对用户定义的类也同样有效,
function class1(){
//类成员的定义及构造函数
}
var obj1=new class1();
抛开类的概念,从代码的形式上来看,class1就是一个函数,那么是不是所有的函数都可以用new来操作呢?是的,在JavaScript中,函数和类就是一个概念,当对一个函数进行new操作时,就会返回一个对象。如果这个函数中没有初始化类成员,那就会返回一个空的对象。例如:
//定义一个hello函数
function hello(){
alert("hello");
}
//通过new一个函数获得一个对象
var obj=new hello();
alert(typeof(obj));
从运行结果看,执行了hello函数,同时obj也获得了一个对象的引用。当new一个函数时,这个函数就是所代表类的构造函数,其中的代码被看作为了初始化一个对象。用于表示类的函数也称为构造器。
三:使用方括号([ ])引用对象的属性和方法
在JavaScript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法)很简单,如:
对象名.属性(方法)名
还可以用方括号的形式来引用:
对象名["属性(方法)名"]
注意,这里的方法名和属性名是一个字符串,不是原先点(? )号后面的标识符,例如:
var arr=new Array();
//为数组添加一个元素
arr.push("abc");
arr["push"]("abc");
//获得数组的长度
var len=arr.length;
var len=arr["length"];
//输出数组的长度
alert(len);
由此可见,上面的代码等价于:
var arr=new Array();
//为数组添加一个元素
arr.push("abc");
//获得数组的长度
var len=arr.length;
//输出数组的长度
alert(len);
这种引用属性(方法)的方式和数组类似,体现了JavaScript对象就是一组属性(方法)的集合这个性质。
这种用法适合不确定具体要引用哪个属性(方法)的情况,例如:一个对象用于表示用户资料,用一个字符串表示要使用的那个属性,就可以用这种方式来引用:
<script language="JavaScript" type="text/javascript">
<!--
//定义了一个User类,包括两个成员age和sex,并指定了初始值。
function User(){
this.age=21;
this.sex="male";
}
//创建user对象
var user=new User();
//根据下拉列表框显示用户的信息
function show(slt){
if(slt.selectedIndex!=0){
alert(user[slt.value]);
}
}
//-->
</script>
<!--下拉列表框用于选择用户信息-->
<select onchange="show(this)">
<option>请选择需要查看的信息:</option>
<option value="age">年龄</option>
<option value="sex">性别</option>
</select>
在这段代码中,使用一个下拉列表框让用户选择查看哪个信息,每个选项的value就表示用户对象的属性名称。这时如果不采用方括号的形式,可使用如下代码来实现:
function show(slt){
if(slt.selectedIndex!=0){
if(slt.value=="age")alert(user.age);
if(slt.value=="sex")alert(user.sex);
}
}
而使用方括号语法,则只需写为:
alert(user[slt.value]);
方括号语法像一种参数语法,可用一个变量来表示引用对象的哪个属性。如果不采用这种方法,又不想用条件判断,可以使用eval函数:
alert(eval("user."+slt.value));
这里利用eval函数的性质,执行了一段动态生成的代码,并返回了结果。
实际上,在前面讲述document的集合对象时,就有类似方括号的用法,比如引用页面中一个名为“theForm”的表单对象,以前的用法是:
document.forms["theForm"];
也可以改写为:
document.forms.theForm;
forms对象是一个内部对象,和自定义对象不同的是,它还可以用索引来引用其中的一个属性。
<script type="text/javascript">
//这两种写法输出的结果是一致的
var arr=new Array();
// arr.push("abcd");
arr["push"]("abcd") alert(arr);
// alert(arr.length);
alert(arr["length"]);
</script>
<head>
<title></title>
<script type="text/javascript">
function User(){
this.age=21;
this.sex="nan";
}
var user=new User();
function show(slt){
if(slt.selectedIndex==0)return;
alert(user[slt.value]);
var value=eval("user."+slt.value);
alert(value);
alert(eval("user."+slt.value));
}
</script>
</head>
<body>
<select onchange="show(this)">
<option>选择信息</option>
<option value="age">年龄</option>
<option value="sex">性别</option>
</select>
</body>
</html>
三:动态添加、修改、删除对象的属性和方法
已经了解了如何引用一个对象的属性和方法
其他语言中,对象一旦生成,就不可更改,要为一个对象添加、修改成员必须要在对应的类中修改,并重新实例化,程序也必须重新编译。JavaScript提供了灵活的机制来修改对象的行为,可以动态添加、修改、删除属性和方法。例如:先用类Object来创建一个空对象user:
var user=new Object();
1.添加属性
这时user对象没有任何属性和方法,可以为它动态的添加属性,例如:
user.name="jack";
user.age=21;
user.sex="male";
通过上述语句,user对象具有了三个属性:name、age和sex。下面输出这三个语句:
alert(user.name);
alert(user.age);
alert(user.sex);
由代码运行效果可知,三个属性已经完全属于user对象了。
2.添加方法
添加方法的过程和添加属性类似:
user.alert=function(){
alert("my name is:"+this.name);
}
这就为user对象添加了一个方法“alert”,通过执行它,弹出一个对话框显示自己的名字:
user.alert();

3.修改属性和方法
修改一个属性和方法的过程就是用新的属性替换旧的属性,例如:
user.name="tom";
user.alert=function(){
alert("hello,"+this.name);
}
这样就修改了user对象name属性的值和alert方法,它从显示“my name is”对话框变为了显示“hello”对话框。
4.删除属性和方法
删除一个属性和方法的过程也很简单,就是将其置为undefined:
user.name=undefined;
user.alert=undefined;
这样就删除了name属性和alert方法。
或
delete user.name;
在添加、修改或者删除属性时,和引用属性相同,也可以采用方括号([])语法:
user["name"]="tom";
使用这种方式还有一个特点,可以使用非标识符字符串作为属性名称,例如标识符中不允许以数字开头或者出现空格,但在方括号([])语法中却可以使用:
user["my name"]="tom";
需要注意,在使用这种非标识符作为名称的属性时,仍然要用方括号语法来引用:
alert(user["my name"]);
而不能写为:
alert(user.my name);
事实上,JavaScript中的每个对象都是动态可变的,这给编程带来了灵活性,也和其他语言产生了区别。
技巧:undefind 和null的区别:未定义undefind 定义了未找到 null;
aaarticlea/png;base64,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" alt="" />
切记:js没有重载,
五:使用大括号({ })语法创建无类型对象
传统的面向对象语言中,每个对象都会对应到一个类。刚提到的this指针时提到,JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上类的概念。所以它提供了一种简单的方式来创建对象,即大括号({})语法:
{
property1:statement,
property2:statement2,
…,
propertyN:statmentN
}
通过大括号括住多个属性或方法及其定义(这些属性或方法用逗号隔开),来实现对象的定义,这段代码就直接定义个了具有n个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。例如:
<script language="JavaScript" type="text/javascript">
<!--
var obj={}; //定义了一个空对象
var user={
name:"jack", //定义了name属性,初始化为jack
favoriteColor:["red","green","black","white"],//定义了颜色喜好数组
hello:function(){ //定义了方法hello
alert("hello,"+this.name);
},
sex:"male" //定义了性别属性sex,初始化为male
}
//调用user对象的方法hello
user.hello();
//-->
</script>
第一行定义了一个无类型对象obj,它等价于:
var obj=new Object();
接着定义了一个对象user及其属性和方法。注意,除了最后一个属性(方法)定义,其他的必须以逗号(,)结尾。其实,使用动态增减属性的方法也可以定义一个完全相同的user对象,可使用前面介绍的方法实现。
使用这种方式来定义对象,还可以使用字符串作为属性(方法)名,例如:
var obj={"001":"abc"}
这就给对象obj定义了一个属性“001”,这并不是一个有效的标识符,所以要引用这个属性必须使用方括号语法:
obj["001"];
由此可见,无类型对象提供了一种创建对象的简便方式,它以紧凑和清晰的语法将一个对象体现为一个完整的实体。而且也有利于减少代码的体积,这对JavaScript代码来说尤其重要,减少体积意味着提高了访问速度。
六:prototype原型对象(可以理解为静态属性)
prototype 对象是实现面向对象的一个重要机制。每个函数(function)其实也是一个对象,它们对应的类是“Function”,但它们身份特殊,每个函数对象都具有一个子对象prototype。即prototype表示了该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过 new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。
既然prototype是一个对象,给出一个简单的例子:
//定义了一个空类
function class1(){
//empty
}
//对类的prototype对象进行修改,增加方法method
class1.prototype.method=function(){
alert("it's a test method");
}
//创建类class1的实例
var obj1=new class1();
//调用obj1的方法method
obj1.method();
定义一个js文件:
function User(){
this.age = 21;
this.name = "张三" }
<script type="text/javascript" src="js/demo01.js"></script>
function Test7(){
var user01 = new User();
user01.name = "zhangsan"; //定义一个prototype 都会有这样属相
User.prototype.alert=function(){
alert("user alert111")
} user01.alert(); var user02 = new User(); user02.alert(); var user03 = new User();
user03.alert(); } <button onclick="Test7()">Test7</button>