对象
JavaScript 是面向对象的语言,但 JavaScript 不使用类。
在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。
JavaScript 基于 prototype,而不是基于类的。
JavaScript 对象
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型。
访问属性或方法
- objectName.propertyName
- objectName.methodName()
创建自定义对象
有两种方式:
- 直接定义
person = new Object()或者person = new Object;
//添加属性
person.propertyName = value
person={propertyName1:value1,propertyName2:value2…};
//添加方法
person.methodName = methodName; - 使用构造函数
person = new Person();
扩展(prototype)
prototype 属性使您有能力向对象添加属性和方法。
object.prototype.name = value
三种自定义对象的方式比较
使用直接定义方式,比较直观快捷,可以直接添加属性和方法;但是适合创建单个对象,如果创建多个同类对象,就不合适了。
使用构造函数方式,灵活,可以使用prototype添加属性和方法,比较适合作为一个类来用,可以多次调用创建同类对象。
实例
<script type="text/javascript">
//构造函数
function Person(id,name,score){
this.id = id;
this.name = name;
this.score = score;
//添加方法
//this.toString = toString;
/*
也可以使用定义内部函数的方式
function toString(){
//JavaScript for...in 语句循环遍历对象的属性。
var string = "";
for (x in this)
{
string += this[x] + ",";
}
return string.substring(0,string.length - 1);
}*/
}
//输出函数
function toString(){
//JavaScript for...in 语句循环遍历对象的属性。
var string = "";
for (x in this)
{
string += this[x] + ",";
}
return string.substring(0,string.length - 1);
}
//1. 直接创建实例
var person = new Object;
person.id = 1;
person.name = "li ming";
person.score = 89.5;
person.toString = toString;
//2. 使用literal(文字)创建实例
var p1 = {id:1,name:"li ming",score:89.5};
p1.toString = toString;
//3. 使用构造函数创建实例
var p2 = new Person(1,"li ming",89.5);
//p2.toString = toString;
//使用prototype给对象添加属性或者方法。
Person.prototype.toString = toString;
//输出对象
document.write(person.toString()+ "<br/>");
document.write(p1.toString() + "<br/>");
document.write(p1.toString() + "<br/>");
</script>