一:JavaScript中的对象
说明:1在JavaScript中,对象被定义为是无序属性的集合。
2在JavaScript中,没有“类”,因此用于描述对象的“类”称为对象的定义。
二:对象的类型
可分为:内部对象,宿主对象,自定义对象。
内部对象:Array,Boolean,Date,Function,Global,Math,等。
宿主对象:执行JavaScript脚本环境所提供的对象。docment,window,等。
自定义对象:我们自己定义的对象。
三:创建对象的七种方法
1最常见的创建无类型对象
var book ={
title:"javascript开发",
author:"jjlin",
price: 100,
introduce:function(){
document.write("book title:"+this.title+",author:"+this.author+",price:"+this.price+"<hr>");
}
}
book.introduce();
2派生自Object对象,然后添加属性和方法
var ChildObj = new Object();
//添加属性
ChildObj.name ="jjlin";
ChildObj.password="123";
//添加方法
ChildObj.getProperties = function(){
document.write("name:"+this.name+",pssword:"+this.password+"<hr>");
}
ChildObj.getProperties();
3采用工厂方式创建对象
function createObject(name,password){
var object = new Object();
object.name = name;
object.password=password;
//多个对象的实例共享一个方法(函数),而不是每一个对象的实例都拥有一个函数对象
object.getProperties = displayInfo;
return object;
}
function displayInfo(){
document.write("name:"+this.name+",password:"+this.password+"<hr>");
}
var obj1 = new createObject("jjlin","123");
obj1.getProperties();
var obj2 = new createObject("lin","456");
obj2.getProperties();
4构造函数方法创建对象
function Person(name,password){
//在执行第一行代码前,js引擎会首先生成一个当前的对象。
this.name =name;
this.password= password;
this.getProperties = displayInfo;
//此处隐藏一个return语句,返回之前生成的对象
}
function displayInfo(){
document.write("name:"+this.name+",pssword:"+this.password+"<hr>");
}
var obj1 = new Person("jjlin","123");
obj1.getProperties();
5使用原型(prototype)创建对象
//生成的对象会共享原型中的属性,方法
//该方法无法在构造函数中为属性赋值,只能在对象生成后,再改变属性值。
function Person(){}
Person.prototype.name ="lin";
Person.prototype.password = "123";
Person.prototype.getProperties = function(){
document.write("name:"+this.name+",pssword:"+this.password+"<hr>");
}
var p = new Person();
p.getProperties();
6使用原型+构造函数方式创建对象
function Person(){
//使用数组
this.name = new Array();
this.password = "123";
}
Person.prototype.getInfo = function(){
document.write("name:"+this.name+",pssword:"+this.password+"<hr>");
}
var p = new Person();
var p2 = new Person();
p.name.push("jjlin");
p2.name.push("lin");
p.getInfo();
p2.getInfo();
7动态原型方式创建对象
//在构造函数中通过标志量让所有对象共享一个方法,
//而每个对象拥有自己的属性。
function Person(){
this.name = "jjlin";
this.password = "123";
if(typeof Person.flag == "undefined"){
alert("invoked");
Person.prototype.getInfo = function(){
document.write("name:"+this.name+",pssword:"+this.password+"<hr>");
}
}
Person.flag = true;
}
var p = new Person();
var p2 = new Person();
p2.name = "lin";
p.getInfo();
p2.getInfo();
说明:内容参照赵龙《圣思园JavaScript》视频。