zoukankan      html  css  js  c++  java
  • javascript学习笔记——Object

    javascript object 对象

    所有其他对象都继承自object。(1,'1'这类的整数、字符串不是对象,但是在解析的时候会自动被封装成对应的原型对象实例)

    b = new Object(a),如果a是一个对象,则a===b, 如果a不是对象,则b是a的包装对象(如 数字1的包装对象new Number(1))。

    所有的构造函数(可以理解为类)都有一个prototype属性,指向一个原型对象。所有实例共享prototype上的属性和方法,这个要跟static区分开,JavaScript里也有static关键字,非静态方法中调用static申明的函数需要使用类名或this.constructor调用,但是在static 方法的内部可以使用this调用静态方法。静态方法可以被子类重写

    静态方法:

    Object.keys(),只返回可枚举的属性 //这俩方法可以计算对象属性个数

    Object.getOwnPropertyNames() 返回可枚举和不可枚举的属性(不可枚举的属性如数组的length)

    • Object.getOwnPropertyDescriptor(obj,propertyKey):获取某个属性的attributes对象。输出的结果是对象属性的权限:
      configurable: true
      enumerable: true
      value: [123]
      writable: true
      __proto__: Object
    • Object.defineProperty(obj,propertyKey,propertyDescriptor):通过attributes对象,定义某个属性。
    • Object.defineProperties():通过attributes对象,定义多个属性。
    • Object.getOwnPropertyNames():返回直接定义在某个对象上面的全部属性的名称。//数组格式,Object.getOwnPropertyNames("abc") //["0", "1", "2", "length"]
    • Object.preventExtensions():防止对象扩展。//不能添加新属性
    • Object.isExtensible():判断对象是否可扩展。
    • Object.seal():禁止对象配置。 //不能添加新属性,所有已有属性变得不可配置,不能配置属性的权限,不可删除属性,可以修改属性的值,不能将属性的值从定义为方法
    • Object.isSealed():判断一个对象是否可配置。
    • Object.freeze():冻结一个对象。
    • Object.isFrozen():判断一个对象是否被冻结。
    • Object.create():该方法可以指定原型对象和属性,返回一个新的对象。
    • Object.getPrototypeOf():获取对象的Prototype对象。获取对象的原型(Object|Number|String)

    Object对象的实例方法

    • valueOf():返回当前对象对应的值。//在运算的时候自动类型转换会调用,可重写
      var b = 1;
      var c = '1';
      console.log(b.valueOf(), c.valueOf());
      b.x = 11;//b其实是个数字,调用函数的时候被转换为了对象,调用完成后就被销毁了
      console.log("b.x:", b);

      //输出结果:
      1 "1"
      b.x: 1
    • toString():返回当前对象对应的字符串形式。//可重写(数组、字符串、函数、Date都重写了自己的方法)  

      对于原型已经重写了toString,可以使用Object.prototype.toString.call(obj)调用Object的toString()方法,返回结果为[object,String|Number|Array|etc]

    • toLocaleString():返回当前对象对应的本地字符串形式。
    • hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。
    • isPrototypeOf():判断当前对象是否为另一个对象的原型。//两个对象原型是否相等
    • propertyIsEnumerable():判断某个属性是否可枚举。
  • 相关阅读:
    [LeetCode] Lowest Common Ancestor of a Binary Search Tree
    [LeetCode] Palindrome Linked List
    Android控件开发之Chronometer(转)
    andriod 动态设置TextView 和 RelativeLayou 高度
    android RelativeLayout 动态设置高度
    android 判断字符串是否为空与比对["=="与equals()的区别]
    android 实现ImageView按压效果和解决背景图片拉申问题
    android XML布局 属性与运用
    android 解决.XML提示ava.lang.NullPointerException at错误后XML没显示
    Android设置AlertDialog点击按钮对话框不关闭(转)
  • 原文地址:https://www.cnblogs.com/weifengxiyu/p/10756643.html
Copyright © 2011-2022 走看看