JS对象'object'

JS中对象 是 复杂类型 , 它与基本类型的区别是 在内存中的占位是否 确定

**除了基本类型「Number Null Undefined Boolean String」. 其余都是对象 **

什么是对象

就是一种无序的数据集合,由若干个“键值对”(key-value)构成

var obj = {
      key1:vlue1,
      key2:vlue2,
      key3:vlue3
}

看上面的语法前两个键值对后面要加「,」最后的可以省略 , 注意 , 最后一个「,」最好不写 因为IE8以下会报错

Object.keys()

  • Object.keys([OBJName]) 用来观看OBJName的所有 key

  • JS对象'object'_第1张图片
    Q20170331171332.png

    看上图 , p1是o的 属性 , p2是o的 方法
    Q20170331171332.png

    并且这些 key 都是 字符串 . 看上图
    JS对象'object'_第2张图片
    Q20170331171332.png

    使用空字符串或者特殊字符串 使用 中括号选中

声明一个对象

三种方式声明一个对象

var obj1 = {};
var obj2 = new Object();  //这个和上面完全等价 , 这个语法是为了和Java相像 , 正常情况没人写这么长的语法
var obj3 = Object.create(Object.prototype) ;

特殊的对象Array

var arr = []
var arr1= new Array()
var arr2= new Array(3)  
//如果只有一个参数 , 那就是这个数组的长度 , 这时候这个数组就相当于里面是3个Undefined

特殊的对象Function

var ff = new Function()
function f() {}

var声明 VS function声明

JS对象'object'_第3张图片
Q20170331171332.png

都是声明a , 看起来function比var要厉害 , ECMA标准就是这么规定的

.

JS对象'object'_第4张图片
Q20170331171332.png

.

JS对象'object'_第5张图片
Q20170331171332.png

function不是比var 厉害吗 怎么是 "number"?
Q20170331171332.png

因为 声明提升 , 两个声明都跑到前面去了 最后才是 a = 1

读取对象属性

有两种方式访问对象属性,一个是点操作符(.),一个是中括号操作符([])。
一. .


var testObj = {
  "hat": "ballcap",
  "shirt": "jersey",
  "shoes": "cleats"
};

var hatValue = testObj.hat;      
var shirtValue = testObj.shirt;

二. []


var testObj = {
  "an entree": "hamburger",
  "my side": "veggies",
  "the drink": "water"
};

var entreeValue = testObj['an entree'];   
var drinkValue = testObj['the drink'];    

你可能感兴趣的:(JS对象'object')