zoukankan      html  css  js  c++  java
  • 对象的属性

    1.原型属性:
    原型属性是用来继承原型对象的属性的。ES5里对象的创建有三种方法:
    --直接量创建--将Object.prototype作为新对象的原型
    --new 构造函数--将构造函数的prototype作为新对象原型
    --Object.create(obj)传入一个原型对象,obj作为原型
    ES5中可以通过Object.getPrototypeOf()查询某对象的原型;在ES3中通过不等价的方法:obj.constructor.prototype属性。
    对于第一种创建对象方法,constructor指代Object()构造函数,因此constructor.prototype才是其原型(所有直接量创建的对象的原型都指向object.prototye)
    对于第二种方法,constructor指向其构造函数
    对于第三种创建对象方法,constructor指代Object()构造函数,但新对象的原型是传入的参数!
    -----------------
    要检测一个对象是否为另一个对象的原型,用isPrototypeOf()方法:
    p.isPrototypeOf(o) --检测p是否为o的原型

    2.class属性
    该属性是一个字符串,表示对象的类型信息。
    只有一种简洁的方法可以查询它:继承自Object.prototye的toString方法,返回:
    [object class]
    但由于很多对象的toString方法重写了,为了调用正确版本的toString(),只好间接地调用Function.call()。
    Object.prototye.toString.call(obj) 判断obj属于哪种类型,比如判断是否为数组。

    3.可扩展性
    设置对象是否可扩展,可以固化对象的属性,即不可添加属性/方法。

    4.特性属性

    刚学JS的都知道对象是一组无序属性/值,属性的值可以是原始类型或对象类型,也可以是一个或一组getter、setter。
    对象的属性可以分为存取器属性(accessor property)和数据属性(data property)。除了名值外,属性还具有一些标识其可写、可枚举、可配置的特性。
    对于数据属性,4个特性分别是:值、可写性、可枚举性、可配置性。
    由getter、setter定义的属性叫存取器属性,getter、setter是函数。存取器属性不具有可写特性,getter和setter分别对应了其读写特性,另外两个特性是可枚举性、可配置性。
    在ES3中,用户自定义属性都是可写、可枚举、可配置的,且这些特性不能修改。
    ES5定义了一个“属性描述符”对象,代表属性的4个特性。其中writable、enumerable、configurable是布尔值。也定义了查询和设置这些特性的API:
    --Object.getOwnpropertyDescriptor(obj,[key]);获取某对象的某属性的特性描述符,不存在或继承的属性返回undefined
    --Object.getPropertyOf() 想获取继承属性的特性,只能遍历原型链
    --Object.defineProperty(obj,[key],descriptorObj);设置对象的某属性的特性,只能修改自由属性
    --Object.defineProperties(obj,keyDescObj) 第二个参数是一个对象形式映射,属性:描述符。



  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/alan2kat/p/7323371.html
Copyright © 2011-2022 走看看