1.什么是对象?
对象是具体的事和物
手机不是对象,是一类事物
汽车不是对象,是一类事物
2.对象:
特征—>属性
行为—>方法
3.是无序属性的集合
var student = {
name: '张飞',
age: '29',
sayHi: function (){
console.log('hello')
}
}
5.函数和对象的区别
函数–可以封装代码
对象--封装属性和方法
6.函数和方法的区别
本质上都是函数
在使用上:
函数–独立存在的函数是函数,通过函数名调用
方法–属于对象的函数,通过对象名
4.创建对象
方法(1)对象字面量
var dog={
name:'xiao',
type:'z',
age:'23',
color:'yello',
bark:function (){
//在方法中使用属性的值
//this在方法中代表当前的dog对象
//在访问属性时,必须指定是访问哪一个对象的属性
console.log(this.name+'叫叫');
}
}
//**如何访问属性**
console.log(dog.name);
//**属性的另一种访问的方式**
console.log(dog['name'])
//*如何访问方法*
dog.bark();
方法(2) new Object:会在内存中创建一个对象
var hero = new Object();//创建一个空的对象
//Object是一个构造函数,通过new调用构造函数
//增加属性
hero.name='李四';
hero.age='23';
hero.equipment=['项链','手机']
//增加方法
hero.sleep=function (){
console.log(this.name+'睡觉!!!')
}
方法(3)工厂方法
function createHero(name,age,equipment) {
var hreo=new Object();
//增加属性
hreo.name=name,
hreo.age=age,
hreo.equipment=equipment
//增加方法
hero.sleep=function (){
console.log(this.name+'睡觉!!!')
}
return hero;
}
var hero1=createHero('李四',13,['项链','手机'])
var hero2=createHero('小九',13,['项链','手机'])
方法(4)自定义构造函数(首字母大写)
function Hero(name,age){
//this 动态的给对象增加成员
//this 指向了当前对象
this.name=name;
this.age=age;
this.sleep=function () {
console.log(this.name+'睡觉!!!')3,
}
}
var hero1=new Hero('李四',19)
var hero2=createHero('小九',1)
7.new关键字
new执行过程
- var hero1=new Hero(‘李四’,19)
在内存中创建一个空的对象 - 让构造函数中的this指向刚刚创建的对象
- 执行构造函数,在构造函数中设置属性和方法,其他事情
- 返回当前对象
8.this关键字
(1)在函数中:this指向Window
function fn(){
console.log(this)
}
fn();
结果为:Window
(2)在方法中:this指向这个方法所属的对象Object
var dog={
name:'xiao',
bark:function (){
console.log(this);
}
};
dog.bark();
结果为:
Object
name: "xiao"
bark: ƒ ()
__proto__: Object
(3)在构造函数中:this指向构造函数创建的对象
function Dog(name) {
this.name=name;
console.log(this)
}
var o=new Dog('狼犬');//构造函数调用
结果为:
Dog
name: "狼犬"
__proto__: Object
Dog();//函数调用
结果为:
Windows
(4)在事件处理函数中*:this指向事件源,谁调用该事件,this就指向谁
<input type="button" id="btn" value="隐藏">
<script>
var btn=document.getElementById('btn');
btn.onclick = function () {
this.value='显示';
console.log(this)
}
</script>
结果为:
<input type="button" id="btn" value="显示">
9.遍历对象和删除对象增加对象
(1)for in 遍历对象属性和方法
var dog={
name:'xiao',
type:'z',
age:'23',
color:'yello',
bark:function (){
console.log(this.name+'叫叫');
}
}
for(var key in dog){
console.log(key+'---'+dog[key])
}
结果为:
name---xiao
type---z
age---23
color---yello
bark---function (){
console.log(this.name+'叫叫');
}
(2)遍历增加对象属性
var o={}
for(var i = 0;i <10; i++){
o['a'+i]=i
}
console.log(o)
结果为
Object
a0: 0
a1: 1
a2: 2
a3: 3
a4: 4
a5: 5
a6: 6
a7: 7
a8: 8
a9: 9
__proto__: Object
(3)删除对象属性:delect删除对象属性和方法
var dog={
name:'xiao',
type:'z',
age:'23',
color:'yello',
bark:function (){
console.log(this.name+'叫叫');
}
}
console.log(dog.age)
console.log(dog.bark)
delete dog.bark;
delete dog.age;
console.log(dog.age)
console.log(dog.bark)
结果为:
23
ƒ (){
console.log(this.name+'叫叫');
}
undefined
undefined