JS对象

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执行过程

  1. var hero1=new Hero(‘李四’,19)
    在内存中创建一个空的对象
  2. 让构造函数中的this指向刚刚创建的对象
  3. 执行构造函数,在构造函数中设置属性和方法,其他事情
  4. 返回当前对象
    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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值