JavaScript面向对象程序设计(5): 类
来源:互联网 发布:中国省市地区数据库 编辑:程序博客网 时间:2024/05/16 18:44
原文链接:http://devbean.blog.51cto.com/448512/174912
类是面向对象程序设计的核心概念之一。一个类代表了具有相似属性的一类事物的抽象。从本篇开始,我们将正式的进入JavaScript的面向对象部分。首先需要注意的是,在JavaScript中并没有“类”这一关键字——在大多数语言中都是使用class作为关键字的。所以,这里的类就成了一个概念,它没有明确的语法标志。
1. 类和构造函数
前面说过,在JavaScript中并没有明确的类的概念。实际上,我们给出的只是类的构造函数。类的构造函数构成了这个类的全部内容。既然叫做构造函数,它也是一个普通的函数,没有什么不同之处。因此,我们能够很轻易的定义出一个构造函数:
function Person(name, age) {
this.name = name;
this.age = age;
this.show = function() {
alert("Hello, my name is " + this.name + ", my age is " + this.age);
};
}
this.name = name;
this.age = age;
this.show = function() {
alert("Hello, my name is " + this.name + ", my age is " + this.age);
};
}
这里,我们定义了一个类 Person,它有两个属性:name和age;有一个方法:show。看上去和其他语言的类的定义没有什么不同。其实,这里最大的不同就是在于这个关键字function。我们使用了定义函数的方式定义了一个类。
2. new
定义出来类之后,需要创建类的对象。同其他语言一眼,JavaScript也使用new操作符创建对象。具体代码如下:
var bill = new Person("Bill", 30);
alert(bill.name);
alert(bill["age"]);
bill.show();
alert(bill.name);
alert(bill["age"]);
bill.show();
3. prototype
有点迷糊了不是?看一下下面的图,无论怎样,都要保证这个图所示的关系式正确的!
由于JavaScript函数对于参数控制比较困难,因此参数检测成为一个不可忽视的问题。这里给出一个编程的小技巧,能够检查传入的实参是否非空,以及给参数设置默认值。
function print(mustHave, person) {
var defaultPerson = {
name: "noname",
age: 0
};
if(!mustHave) { // 非空检测
alert("mustHave should not be null!");
return;
}
person = person || defaultPerson; // 设置默认值
alert(mustHave + ": name- " + person.name + "; age- " + person.age);
}
print();
print("sth");
print("sth", {name: "new", age: 20});
var defaultPerson = {
name: "noname",
age: 0
};
if(!mustHave) { // 非空检测
alert("mustHave should not be null!");
return;
}
person = person || defaultPerson; // 设置默认值
alert(mustHave + ": name- " + person.name + "; age- " + person.age);
}
print();
print("sth");
print("sth", {name: "new", age: 20});
非空检测比较简单。默认值的设置比较有技巧,利用了JavaScript的||操作的短路特性。如果形参person为空,那么||前半部分为false,通过或操作,将把person设置为defaultPerson;如果person非空,则||直接返回true,那么就不进行或操作。
0 0
- JavaScript面向对象程序设计(5): 类
- JavaScript面向对象程序设计(5): 类
- JavaScript面向对象程序设计(5): 类
- JavaScript面向对象程序设计
- javascript面向对象程序设计
- javascript面向对象程序设计
- javascript面向对象程序设计
- JavaScript面向对象程序设计
- JavaScript的面向对象程序设计
- javascript 面向对象的程序设计
- JavaScript之面向对象程序设计
- JavaScript中的面向对象程序设计
- JavaScript的面向对象程序设计
- JavaScript面向对象的程序设计
- 《Javascript高级程序设计》面向对象的程序设计
- JavaScript面向对象程序设计(3): 对象
- JavaScript面向对象程序设计(3): 对象
- JavaScript面向对象程序设计(3): 对象
- pyhon登录cloudstack并获取cookie调用接口
- Thinkpad t440P 笔记本 win2008 R2安装相关
- 阻塞访问原理——等待队列
- Android性能优化典范(二)
- hdu 1712 ACboy needs your help 分组背包
- JavaScript面向对象程序设计(5): 类
- 雪(49)
- Eclipse 自动提示功能配置
- 线程安全且按需构建的单例模式
- 安装配置Internet信息服务(IIS)
- 排序小结(1)-冒泡,快排(c语言实现)
- perror
- 数据库并发事务控制四:postgresql数据库的锁机制
- JavaScript面向对象程序设计(6): 封装