对象这一概念在生活普遍存在,和男女朋友这个对象不同,它是一类具有相同共性和方法的统称。洗衣房的洗衣机是一个对象,所有洗衣机都有颜色;功率等属性和洗衣服;脱水等方法,具体到小天鹅X55型号洗衣机是洗衣机对象的具体实例。
java是面向对象编程语言,JavaScript也是支持面向对象编程的语言,和java有很多相似地方,也存在很多不同的地方。
1.JavaScript中的对象
在JavaScript中几乎所有事物都是对象,对象就会有一些属性和方法,基本数据类型都是对象:字符串可以是对象;数组可以是对象…
<script>
//调用字符串对象s的length属性
let s = 'ssss';
console.log(s.length);
//调用数组对象的toString()方法
let n = [1,2,3,4,5,6,7];
console.log(n.toString())
</script>
2.对象定义
//student对象
let student = {
//属性
name:'wang',
age:3,
score:99.5,
//方法只能写成键值对形式
study : function (){
console.log('study');
}
};
1)JavaScript中的对象有对象名并且由{}包裹属性和方法
//定义person对象
let person = {};
2)每个属性都是一个键值对,如 age:‘zhang’,属性名是键,可以不用单引号或双引号包裹,属性值可以是各种类型:String字符串型,Number数字型…
let person = {
//属性名可以不用引号括起来,比较简洁
"name":'wang',
age:3,
score:99.5,
};
3)如果不是对象的最后一个属性或方法需要在后面加上英文逗号 ,
//一个对象可以有多个属性和方法
let person = {
"name":'wang',
age:3,
score:99.5,
//方法只能写成键值对形式
study : function (){
console.log('study');
}
};
3.对象属性
1)对象可以理解为是属性的容器,可以有多个属性,每个属性又是一个键值对,如XXX : XX
let person = {
//对象属性为键值对
name:'wang',
age:3,
score:99.5,
};
2)可以通过对象名.属性名得到某个对象属性值,也可以使用对象名[‘属性名’]获取属性值
let person = {
//对象属性为键值对
name:'wang',
age:3,
score:99.5,
};
//访问对象属性 可以对象名.属性名 也可以对象名['属性名']
console.log(person.age);
console.log(person['age']);
3)可以动态增加属性,格式为 对象名.新属性 = 属性值; person.id = 1232;
let person = {
name:'wang',
age:3,
score:99.5,
};
//增加person对象属性
person.id = 1123;
4)访问了对象没有的属性不会报错,会返回undefined
let person = {
name:'wang',
age:3,
score:99.5,
};
//访问person对象没有的id属性,返回undefined
console.log(person.id);
5)可以动态删除对象属性,格式为delete 对象名.属性名;
let person = {
name:'wang',
age:3,
score:99.5,
};
//删除person对象age属性
delete person.age;
6)可以对象是否拥有某个属性,格式为 ‘属性名’ in 对象名;
let person = {
name:'wang',
age:3,
score:99.5,
};
//判断person对象是否有age属性,有返回true;没有返回false
console.log('age' in person);
7)可以判断某个属性是类自身的,不是继承而来的,格式为对象名.hasOwnProperty(‘属性名’);
let person = {
name:'wang',
age:3,
score:99.5,
};
//判断person对象toString属性是否是自身的,是返回true;不是返回false
console.log( person.hasOwnProperty('name'));
4.对象方法
1)对象可以定义一个函数去处理数据,格式为: 方法名 :function(){代码};
//student对象
let student = {
//属性
name:'wang',
//方法只能写成键值对形式 方法名:function(){}
study : function (){
console.log('study');
}
};
2)可以调用对象的方法 对象名.方法名();
//student对象
let student = {
//属性
name:'wang',
//方法只能写成键值对形式
study : function (){
console.log('study');
}
};
//调用study()方法
student.study();