美文网首页
属性的类型

属性的类型

作者: ticktackkk | 来源:发表于2020-11-06 14:02 被阅读0次

数据的属性

  • [Configurable] 是否可以删除并且重新定义
  • [ Enumerable] 是否可以通过 for in 循环返回
  • [Writeable] 是否可以被修改
  • [Value] 属性的实际值

修改属性的默认特性

  • Object.defineProperty()
    三个参数
    分别为 添加属性的对象,属性的名称,和描述符对象
      let person={}
      Object.defineProperty(person,'name',{
          value:123,
      })
      console.log(person);

访问器属性

  • [Configurable] 是否可以删除并且重新定义
  • [Enumerable] 是否可以通过 for in 循环返回
  • [Get] 获取函数,在读取属性的时候调用,默认值为undefined
  • [Set] 设置函数,在写入属性的时候调用,默认值为undefined
另外访问器属性不能被直接调用,必须用Object.defineProperty()
      let book = {
        year_: 2017,
        editon: 1,
      };
      Object.defineProperty(book, "year", {
        get(e) {
          return this.year_;
        },
        set(newValue) {
          if (newValue > 2017) {
            this.year_ = newValue;
            this.editon += newValue - 2017;
          }
        },
      });
      book.year = 2018;
      console.log(book);
定义多个属性Object.defineProperties

这段代码定义了两个数据属性year_和edtion还有一个访问器属性year

      let book = {
        year_: 2017,
        editon: 1,
      };
      Object.defineProperties(book, {
        year_: {
          Value: 2020,
        },
        editon: {
          value: 1,
        },
        year: {
          get() {
            return this.year_;
          },
          set(newValue) {
            if (newValue > 2017) {
              this.year_ = newValue;
              this.editon += newValue - 2017;
            }
          },
        },
      });
      book.year = 2018;
      console.log(book);
读取属性的特性Object.getOwnPropertyDescriptor
      console.log(Object.getOwnPropertyDescriptor(book,'year'));
     // configurable: false
     // enumerable: false
     // get: ƒ get()
     // set: ƒ set(newValue)
     //__proto__: Object
合并类型Object.assign()(浅拷贝)
  • 弊端:如果源对象属性值改变,则源对象的对应的值也会改变
    这个方法接收一个目标对象和一个或者多个目标对象作为参数
    并且是将源对象可枚举和自有属性
      desc = {};
      src = {
        id: "src",
      };
      aaa = {
        ids: "aaa",
      };
      result = Object.assign(desc, src, aaa);
      console.log(result);

如果多个对象都有相同的属性,则使用最后一个赋值的值

    a = {
        value: 1,
      };
      b = {
        value: 2,
      };
      Object.assign(a, b);
      console.log(a);//value:2
对象相等及标识判定

Object.is()

     console.log(Object.is(true,1));false
     console.log(Object.is({},{})); false
     console.log(Object.is("2",2)); false
     console.log(Object.is(NaN,NaN)); true
     console.log(Object.is(+0,-0)); false
     console.log(Object.is(-0,0)); false
     console.log(Object.is(+0,0)); true

相关文章

  • 由对象的属性说到几个容易混淆的js内建方法

    前言 关于属性 属性类型: 对象有两种属性类型:String类型属性 与 Symbol类型属性。它们通常被称为属性...

  • 2020-05-22

    类型属性与非类型属性的区别 结构体SomeStructure增加一个常量存储属性 类型属性调用 非类型属性调用 实...

  • React Native 之propTypes 属性声明和属性确

    属性声明的示例 属性确认的类型 属性为任意类型 属性是否为 JavaScript 基本类型 属性是某个 React...

  • 如何使用属性_05

    Shaderlab属性类型和CG变量类型的匹配关系 ShaderLab属性类型对应的CG属性类型 Color,Ve...

  • Swift-属性和方法

    计算型属性 类型属性(全局属性) 类型方法(全局方法) 属性观察器

  • JS基础之面向对象-基础

    属性类型 说到属性类型,指的是一个对象所拥有的所有属性的特征。包括两类:数据属性和访问器属性。属性类型的存在就是为...

  • 属性的类型

    数据的属性 [Configurable] 是否可以删除并且重新定义 [ Enumerable] 是否可以通过 fo...

  • 每天学一点Swift----面向对象上(十一)

    十三.类型属性和类型方法 1.通过前面的学习,已经知道Swift的类型中有5种成员:属性(存储属性和计算属性)、方...

  • Properties

    属性分为类型属性和实例属性。使用static和class关键字修饰的属性为类型属性,否则为实例属性。其中stati...

  • Go语言结构体

    结构体 和C语言几乎一模一样 格式:type 结构体类型名称 struct{属性名称 属性类型;属性名称 属性类型...

网友评论

      本文标题:属性的类型

      本文链接:https://www.haomeiwen.com/subject/csctbktx.html