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) 第二个参数是一个对象形式映射,属性:描述符。



  • 相关阅读:
    黄金作为货币的本质
    万有引力和做功。
    Arp攻击实战
    Android SDK下载项的说明
    宇宙、事象
    事件视界
    微积分
    金融的三大基础货币,股票,期货。
    pos机的热敏纸尺寸
    去除text历史记录
  • 原文地址:https://www.cnblogs.com/alan2kat/p/7323371.html
Copyright © 2011-2022 走看看