Javascript对象

本文详细介绍了JavaScript中的对象创建方式,包括字面量和构造函数,并展示了对象的初始化、属性增删改查操作。通过实例讲解了Symbol作为唯一键值的使用,以及this的指向问题。此外,还探讨了尝试访问不存在属性时返回undefined的情况。
摘要由CSDN通过智能技术生成

Javascript对象

概念:一切事物皆对象

一:声明对象的方式
1.方式1:字面量
  • 书写格式1:关键字 对象名 赋值符号 大括号 ;

    let obj = {};
    
2.方式2:构造函数
  • 书写格式2:关键字 对象名 赋值符号 new Object() ;

    let obj1 = new Object();
    
二:对象的初始化
  • 变量就是对象的属性()
  • 函数就是对象的方法(行为、功能)
let person = {
    name:"zhangsan",
    age :18,
    money:10,
    foo:function(){}  //正规写法
}
let person = {
    name:"zhangsan",
    age :18,
    money:10,
    foo(){}   //简写方式,都是ok的
}
1,【增】
  • 方法一:书写格式1:对象.键名 赋值 表达式;

    person.baomu = 5;
    console.log(person.baomu);  //5
    
  • 方式2:书写格式2:对象名[键名] 赋值 表达式;

    • 注1:键名必须是字符串

      person["sex"] = "男";
      console.log(person.sex);
      
    • 注2:键名也可以是字符串类型的变量

      let sex = "sex";
      person[sex] = "男";
      console.log(person.sex);
      
Symbol的适用场景

若新增一个对象存在的键名,则为覆盖

person.age = 80;
console.log(person.age); //80

解决方式:Symbol(实参)

注:实参是字符串类型,即为标识

let age = Symbol("age");
console.log(typeof age);
person[age] = 80;
console.log(person.age); //18
console.log(person[age]); //80
console.log(person);  //{ name: 'zhangsan', age: 18, foo: [Function: foo], [Symbol(age)]: 80 }
2.【删除】
  • 书写格式:delete 对象名.键名;

  • 注:删除方法不要加小括号

    delete person.name;
    console.log(person);  //{ age: 18, foo: [Function: foo] }
    delete person.foo;
    console.log(person);  //{ name: 'zhangsan', age: 18 }
    
3.【修改】

法1:

person.age = 20;
console.log(person.age);  //20

法2:

person["age"] = 21;
console.log(person.age); //21
4.【查找】
  • 书写格式:键名 in 对象;

  • 返回值:Boolean

console.log("gender" in person);  //false
console.log("age" in person);   //true

遍历对象的键名

for(let key in person){
    console.log(key);
}
/* 
name
age
foo
*/

遍历对象的键值

for(let value of Object.values(person)){
    console.log(value);
}
/* 
zhangsan
18
[Function: foo]
*/

遍历对象的键值对

for(let item of Object.entries(person)){
    console.log(item);
}
/* 
[ 'name', 'zhangsan' ]
[ 'age', 18 ]
[ 'foo', [Function: foo] ]
*/
三:扩展
1.获取了对象中不存在的键名返回undefined
let person = {
    name:"zhangsan",
    age :18,
    foo:function(){}
}
console.log(person);
delete person["name"];     //删除了name的属性名
console.log(person.name);  //undefined
2.this的指向
let person = {
    name:"zhangsan",
    age :18,
    foo:function(){
        console.log(`我是${person.name}`);
        console.log(`${this.age}`);   //this是谁调用我我就是谁

    }
}
person.foo();  
/* 
我是zhangsan
我18了
*/
let person1 = {
    name:"l4",
    age:20
}
person1.foo = person.foo; 给person1添加person的方法
person1.foo();
/* 
我是zhangsan
我20了
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值