JavaScript Object

JavaScript对象简介

JavaScript中的对象,是一种无序的集合数据类型,它有若干个键值对组成。我们可以使用一对花括号来表示一个对象

// 1. 多个键值对之间用逗号分隔,最后一个键值对一般不加逗号
// 2. kye可以加引号也可以不加,但对于非法命名格式必须加引号
var myObject = {
    name: 'Mr hu',
    age: 20,
    'phone-num': '123'
}

对象的属性其实都是字符串形式,Array也为数组,所以Array的索引其实也是字符串,只不过用的时候可以不加引号。

JavaScript中的this

在面向对象语言中,this表示当前对象的一个引用。在JavaScript中,this不是固定不变的,它会随着执行环境的改变而改变。

  • 在对象的方法中,this表示该方法所属的对象
  • 在单独使用时,或在非严格模式下的函数中,this表示全局对象
  • 在严格模式下的函数中,this为undefined
  • 在事件中,this表示绑定该事件的元素

in操作符

JavaScript中可以通过使用 in操作符 来判断某个属性是否属于某个对象。这里要注意一下,如果该属性是对象继承过来的,使用 in 判断之后也会返回true。

var person = {
    name: "Mr hu"
}
console.log("toString" in person);  //true
//这里说明一下:toString属性定义在object对象中,而所有对象最终都会在原型链上指向object对象,所以任何对象使用 in 都可以检测得到toString属性

hasOwnProperty()方法

该方法用于判断某个属性是否属于某个对象,并且不是该属性不是通过继承而来的。

var person = {
    name: "Mr hu"
}
console.log(person.hasOwnProperty("toString")); //false

for...in...循环

for...in... 是 for 循环的一个变体,它可以将对象的所有属性依次循环出来。

var person = {
    name: "Mr hu",
    age: 20
}
for (let key in person) {
    console.log(key);   //name age
}

这里要说明一下,由于Array也是对象,而Array的每个索引被视为它的各个属性,所以使用for...in...循环出来的是它的每个索引。

var person =["I", "Love", "You"];
for (let i in person) {
    console.log(i); //0 1 2
}