<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 使用new Object() 创建对象
        var person = new Object()
        // 创建对象后 可以直接设置属性 并赋值
        person.name = "zhangsan"
        person.age = 18
        person.interests = ["篮球", "足球", "乒乓球"]
        // 方法也是对象的属性之一
        // 在方法中 调用属性 也使用this
        person.info = function () {
            console.log(this.name + "的年龄" + this.age + ",喜欢的运动有:")
            // 对数组元素的遍历
            for (var i = 0; i < this.interests.length; i++) {
                console.log(this.interests[i])
            }
        }

        // console.log(person.name)
        // console.log(person.age)
        // console.log(person.interests)
        person.info()

        // 使用{}创建对象
        var person = {
            // 格式: 属性名:属性值, 属性名:属性值
            "name": "张三",
            "age": 20,
            "interests": ["篮球", "足球", "乒乓球"],
            "info": function(){
                console.log(this.name + "的年龄" + this.age + ",喜欢的运动有:")
                // 对数组元素的遍历
                for (var i = 0; i < this.interests.length; i++) {
                    console.log(this.interests[i])
                }
            }
        }
        person.info()
        console.log(person.name)
        console.log(person.age)
        console.log(person)

        
        var person = {
            "name": "李四"
        }
        person.age  // 
        console.log(person.age)  // undefined
        // 新增属性
        person.age = 18
        console.log(person)
        // 删除属性
        delete person.age
        console.log(person)
        delete person['name']
        console.log(person)
        delete person.interests  // 删除不存在的属性时 不会报错
        console.log(person)

        // 可以通过in判断属性是否在对象中存在
        // 要注意的是 in可能通过继承得到
        var person = {
            "name": "王五"
        }
        console.log("name" in person)
        console.log("age" in person)
        // toString 在Object里被定义
        console.log("toString" in person)  // true
        // 判断一个属性是否是自身拥有的 而不是继承得到的
        console.log(person.hasOwnProperty("name"))
        console.log(person.hasOwnProperty("toString"))

    </script>
</head>

<body>
    Hi Object

</body>

</html>