学习笔记一对象扩展

本文介绍了JavaScript中对象属性的简洁表示法,包括属性值与属性名相同的简写、返回对象的函数简写以及方法的简写。同时,讲解了使用方括号表示动态属性名以及Symbol的独特性质,如保证属性的唯一性。还提到了Object.assign()方法在对象合并时的深拷贝与浅拷贝概念,并探讨了Symbol在防止属性名冲突上的作用。
摘要由CSDN通过智能技术生成


属性的简洁表示法

应用场景

1 属性名和属性值相同
2 返回一个对象 实现传递形参功能return
3 在对象里放两个函数 形式更易懂

例如 属性名和变量相同 用变量来代表对象中的属性值
方法也可以简写

const name = '张三';
const age = 19;
const person = {
    name, //等同于name:name
    age,
    // 方法也可以简写
    sayName() {
        console.log(this.name);
    }
}
person.sayName();

当一个函数的返回值是对象时 这种写法非常简单

sayName=function(){}简写为 sayName(){}

function getPoint() {
  const x = 1;
  const y = 10;
  return {x, y};
}

getPoint()
// {x:1, y:10}

对象的属性名可以用[‘表达式’]

用于
对象中的属性名和一个变量名多种组合
也就是说 属性名依赖于变量名

let xing='li';
let obj={
    [xing+'wei']:'liwei',
    [xing+'qiang']:'liqiang',
    ['shuchu'+xing](){
        console.log(this);
    }
}
console.log(obj.liwei);
console.log(obj['liwei']);

属性名的组合放在[]里 记得加’’
方法[‘’] () {}

对象的方法

  1. is() 两个值之间的比较
    =一样 不会进行类型转换==
object.is(NaN,NaN);
//返回true
  1. Object.assign()
    Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
    Object.assign(target,obj1,obj2);

若源对象obj1的a属性的值是一个对象,Object.assign()拷贝得到的是这个对象的引用。这个对象的任何变化,都会反映到目标对象上面。
将源对象(source)的所有可枚举属性,复制到目标对象(target)如果对象的属性值为简单类型(如string, number),通过Object.assign({},srcObj);得到的新对象为深拷贝;如果属性值为对象或其它引用类型,那对于这个对象而言其实是浅拷贝的

(2)同名属性的替换

对于这种嵌套的对象,一旦遇到同名属性,Object.assign()的处理方法是替换,而不是添加。

Symbol

表示独一无二的值

let s1 = Symbol('foo');
let s2 = Symbol('bar');

s1和s2都是Symbol函数的返回值,而且参数相同,但是它们是不相等的。

注意

  1. Symbol 值不能与其他类型的值进行运算,会报错。
  2. Symbol 值可以显式转为字符串(用字符串来显示 但它还是symbol类型)
  3. Symbol 值也可以转为布尔值,但是不能转为数值。!sym=false
  4. sym.description 返回sym的描述
  5. symbol作为属性名 就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。
let mySymbol = Symbol();

// 第一种写法
let a = {};
a[mySymbol] = 'Hello!';

// 第二种写法
let a = {
  [mySymbol]: 'Hello!'
};

注意,Symbol 值作为对象属性名时,不能用点运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值