一 javascript对象
javascript中的所有事物都是对象:字符串,数值,数组,函数.....
此外,javascript允许自定义对象.
javascript提供多个內建对象,比如:String,Date,Array等等.对象只是带有属性和方法的特殊数据类型.
●布尔型可以是一个对象.
●数字型可以是一个对象.
●字符串可以是一个对象.
●日期是一个对象.
●正则表达式也是对象.
●数组是一个对象.
●甚至函数也可以是对象
var person={name:"John",age:31, favColor:"green",height:178};
属性:name,属性值:John. 以此类推.
javascript对象属性
可以通过两种方式访问对象属性.
objectName.propertyName
或者objectName['propertyName']
javascript的内置长度属性用于计算属性或字符串中的字符数.
var course={name:"JS",lesson:34};
document.write(course.name.length)
// ->2
对象方法
对象方法是一个包含函数定义的属性.
调用方法:
objectName.methodName()
使用String对象的toUpperCase()方法来将文本转换为大写:
var message="Coffee is lonely without cups";
var x=message.toUpperCase();
这样Coffee is lonely without cups 就会变成COFFEE IS LONELY WITHOUT CUPS
方法是作为对象属性存储的函数.
二 对象构造器
使用函数来构建对象:
function person(firstname,lastname,age,eyecolor){
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor; }
在javascript中,this通常指向我们正在执行的函数本身,或者指向该函数所属的对象(运行时)
创建javascript对象实例
一旦你有了对象构造器,就可以创建新的对象实例.
var myFather= new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green") ;
document.write(myFather.age); //->50
document.write(myMother.name);//->Sally
myFather和myMother是person对象的实例.
三 对象初始化
使用对象literal或initializer语法创建单个对象.(literal:字面量.initializer:初始化程序,初始化器)
var John={name:"John",age:25};
var Loen={name:"Loen",age:28};
使用对象初始化器
空格和换行符并不重要.对象定义可以跨多行.
var John={
name:"John",
age:25};
var Loen={
name:"Loen",
age:28};
无论如何创建对象,访问属性和方法的语法不会改变.
document.write(Loen.age);
四 添加方法
方法是存储在对象属性中的函数.
创建对象函数:
function methodName(){code lines }
访问对象函数:
objectName.methodName()
this关键字是当前对象的引用,这意味着你可以使用this来访问对象属性和方法.
在构造函数中定义方法:
function person(name,age){
this.name=name;
this.age=age;
this.changeName=function (name){
this.name=name;}
}
var p=new person("Loen",28);
p.changeName("John");
在上面的例子中,我们定义了一个名为changeName的方法,该方法是一个函数,它接受参数名称并将其分配给对象的name属性.
添加方法:
可以在构造函数的外部定义一个函数,通过函数名关联到对象的属性上;
function person(name,age){
this.name=name;
this.age=age;
this.yearOfBirth=bornYear; //关联bornYear函数
}
function bornYear(){
return new Date().getFullYear()-this.age(); }
以上的代码中new Date().getFullYear()是获取今年完整的年份时间.如:2018.
我们已将对象的yearOfBirth属性赋予bornYear函数.当通过对象调用bornYear函数时,bornYear函数中的this指向这个对象.
将函数关联到对象属性时不需要写函数后边的括号.
调用方法:
function person(name,age){
this.name=name;
this.age=age;
this.yearOfBirth=bornYear;
}
function bornYear(){
return new Date().getFullYear()-this.age; }
var p=new person("Loen",27);
document.write(p.yearOfBirth());
// ->1991
通过对象的属性名调用函数而不是直接调用函数.
每天坚持进步一点点!