Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JS Object #32

Open
kangkai124 opened this issue Jul 17, 2019 · 2 comments
Open

JS Object #32

kangkai124 opened this issue Jul 17, 2019 · 2 comments

Comments

@kangkai124
Copy link
Owner

Object相关的方法和使用

@kangkai124
Copy link
Owner Author

  • for...in循环:只遍历对象自身的和继承的可枚举的属性
  • Object.keys():返回对象自身的所有可枚举的属性的键名
  • JSON.stringify():只串行化对象自身的可枚举的属性
  • Object.assign(): 忽略enumerablefalse的属性,只拷贝对象自身的可枚举的属性
    其中,只有for...in会返回继承的属性,其他三个方法都会忽略继承的属性,只处理对象自身的属性。
  1. 所有 Class 的原型的方法都是不可枚举的

  2. 属性的遍历

    ES6 一共有 5 种方法可以遍历对象的属性。

    (1)for...in

    for...in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。

    (2)Object.keys(obj)

    Object.keys返回一个数组,包括对象自身(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。

    (3)Object.getOwnPropertyNames(obj)

    Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。

    (4)Object.getOwnPropertySymbols(obj)

    Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性的键名。

    (5)Reflect.ownKeys(obj)

    Reflect.ownKeys返回一个数组,包含对象自身的所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。

  3. super指向当前对象的原型对象

  4. 对象结构赋值的拷贝是浅拷贝,且不能复制继承自原型对象的属性

  5. Object.defineProperty方法为一个对象增加属性时,默认是不可枚举的。

    const person = { name: "Lydia" };
    Object.defineProperty(person, "age", { value: 21 });
    
    console.log(Object.keys(person));
    // ["name"]

@kangkai124
Copy link
Owner Author

  1. Object.getOwnPropertyDescriptor: 获取该属性的描述对象

    let obj = { foo: 123 };
    Object.getOwnPropertyDescriptor(obj, 'foo')
    //  {
    //    value: 123,
    //    writable: true,
    //    enumerable: true,
    //    configurable: true
    //  }
  2. Object.getOwnPropertyDescriptors():返回指定对象所有自身属性(非继承属性)的描述对象

  3. Object.setPrototypeOf(obj, prototype):将 obj 的原型指向 prototype

  4. Object.fromEntries()Object.entries()的逆操作,用于将一个键值对数组转为对象

    该方法的一个用处是配合URLSearchParams对象,将查询字符串转为对象。

    Object.fromEntries(new URLSearchParams('foo=bar&baz=qux'))
    // { foo: "bar", baz: "qux" }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant