JavaScript对象
- 对象是JavaScript的一种复合数据类型,它可以把多个数据集中在一个变量中,并且给其中的每个数据起名字
- 或者说,对象是一个属性集合,每个属性有自己的名字和值
- JavaScript并不像其他OOP语言那样有类的概念,不是先设计类再制造对象
先有对象,后面才有属性,向对象中不断的填充属性
var v = new Object();
var ciclr = {x:0, y:0, radius:2};
var book = new Object();
bool.title = "Goods";
删除对象属性:delete book.chapter1
即可将对象中的属性删除
遍历所有属性:for (var x in object) ……
var o = new Object();
o.name = "John";
o.age = 30;
o.salary = 300;
for(var i in o) {
alert(i);
}
// 或者
for(var x in o) {
alert(o[x]);
}
制造对象的另外一种方式:构造函数方式
function Rect(w,h){
this.width = w;
this.height = h;
this.area = function() { return this.width * this.height; }
}
var r = new Rect(5, 10);
alert(r.area());
原型对象
- 对象的protype属性指定了它的原型对象,可以用
.
运算符志杰读它的原型对象的属性 - 当写这个属性时,才在它自己内部产生实际的属性
所有的原型对象是共享元素的,只要不去改它,所有的对象都是一样的。实例化之后可以改,改了之后就变成了自己的默认的值了。个人感觉,有点像C++的默认构造函数的味道。
function Person() {}
Person.prototype.name = "Nike";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function() {
alert(this.name);
}
var person1 = new Person();
person1.sayName();
var person2 = new Person();
person2.sayName();
alert(person1.sayName() === person2.sayName());
原型对象中的元素相当于JAVA中的static
变量,所有类的实例化共享。
function Person() {}
Person.prototype = {
constructor : Person,
name : "Nicholas",
age : 29,
job : "Software Engineer",
friends : ["Shelby", "Court"],
sayName : function() {
alert(this.name);
}
}
var person1 = new Person();
var person2 = new Person();
person1.friends.push("Van");
alert(person1.friends);
alert(person2.friends);
组合原型和构造方法
function Person() {}
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.friend = ["Shelby", "Court"];
}
Person.prototype = {
constructor : Person,
sayName : function() {
alert(this.name);
}
}
var person1 = new Person("Nicholas", 29, "Software Engineer");
var person2 = new Person("Greg", 27, "Doctor");
person1.friend.push("Van");
alert(person1.friend);
alert(person2.friend);
alert(person1.friend === person2.friend);
alert(person1.sayName() === person2.sayName());