• js的学习 (对象)


    1.三类JavaScript对象和两类属性

    (1)内置对象(native object):由ECMAScript规范定义的对象或类。例如,数组,函数,日期,正则表达式。

    (2)宿主对象(host object):由JavaScript解释器所嵌入的宿主环境定义的(如Web浏览器)。

    (3)自定义对象:自己创建的对象。

    (4)自有属性:直接在对象中定义的属性。

    (5)继承属性:在对象的原型对象中定义的属性。

    2.创建对象

    没有原型的对象:Object.prototype

    new Object()创建的对象继承自Object.prototype

    new Array()创建的对象的原型是Array.prototype

    new Date()创建的对象的原型是Date.prototype

    Object.create()  //第一个参数是这个对象的原型。第二个可选参数是对对象的属性进行进一步的描述

    它是一个静态函数,而不是提供给某个对象调用的方法。

    var o1 = Object.create({x:1,y:2}); //o1继承了属性x和y

    var o2 = Object.create(null); //o2不继承任何属性和方法。甚至不包括基础方法,如toString()

    创建一个普通的空对象:

    var o3 = Object.create(Object.prototype); //o3和{}和new Object()一样

    3.检测属性

    in运算符。如果对象的自有属性或继承属性中包含这个属性则返回true

    var o = {x:1};

    "x" in o; //true

    "y" in o; //false

    "toString" in o; //true

    对象的hasOwnProperty()用来检测给定的名字是否是对象的自有属性。

    propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测到是自有属性,且这个属性的可枚举性为true时才返回true

    另一种更简便的方法是用 !== 判断一个属性是否是undefined

    var o = {x:1};

    o.x !== undefined; //true

    o.y !== undefined; //false

    o.toString !== undefined; //true 

    4.属性getter和setter

    var o = {

      data_prop:value,

      get accessor_prop(){/*这里是函数体*/},

      get accessor_prop(value){/*这里是函数体*/}

    };

    }

    5.序列化对象

    提供了内置了函数JSON.stringify()和JSON.parse()用来序列化和还原JavaScript对象。

    o = {x:1,y:{z:[false,null,""]}}; //定义一个测试对象

    s = JSON.stringify(o); //s是 '{x:1,y:{z:[false,null,""]}}'

    p = JSON.parse(s); //p是o的深拷贝

  • 相关阅读:
    Gym
    UVALive
    UVALive
    UVALive
    UVALive
    Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset Trie
    HDU 5816 Hearthstone 概率dp
    欧几里德与扩展欧几里德算法(转)
    差分约束系统详解(转)
    2016年第七届蓝桥杯C/C++程序设计本科B组决赛
  • 原文地址:https://www.cnblogs.com/fjl-vxee/p/6818899.html
Copyright © 2020-2023  润新知