JavaScript中的对象

面向对象:根据需求找对象,所有的事都用对象来做,注重的是结果

面向对象特性:封装,继承,多态 (抽象性)

js不是面向对象的语言,但是可以模拟面向对象的思想

js是一门基于对象的语言

创建对象三种方式:

1.调用系统的构造函数创建对象
var 变量名= new Object(); Object 是系统的构造函数  
     
2.自定义构造函数创建对象(结合第一种和需求通过工厂模式创建对象)
     
3.字面量的方式创建对象

1.调用系统的构造函数创建对象

<script>
    var man=new Object();
    //对象有特征---属性和行为---方法
    //添加属性-----如何添加属性?  对象.名字=值;
    man.name="Jack";
    man.age=22;
    man.sex="男";
    //添加方法----如何添加方法? 对象.名字=函数;
    man.eat=function () {
        console.log("吃东西");
    };
    man.sleep=function () {
        console.log("Sleeping..");
    };
    //输出对象的属性的值
    console.log(man.name);
    console.log(man.age);
   console.log(man.sex);
   //调用对象的方法
    man.eat();
    man.sleep();
</script>

如何一次性创建多个对象?

把创建对象的代码封装在一个函数中

//工厂模式创建对象
function createObject(name, age, sex) {
    var obj = new Object();//创建对象
    //添加属性
    obj.name = name;
    obj.age = age;
    obj.sex = sex;
    //添加方法
    obj.eat = function () {
        console.log("吃东西");
    };
    obj.say=function () {
         console.log("Hello");
    };
    return obj;
}
//创建人的对象
var person=createObject("jackson",22,"男");
console.log(person.age);//22
var person2=createObject("mike",29,"男");
console.log(person2.name);//mike

2.自定义构造函数创建对象,自己定义一个构造函数,创建对象

<script>
    //函数和构造函数的区别;名字是不是大写(首字母是大写)
    function Human(name,age,sex){
        this.name=name;
        this.age=age;
        this.sex=sex;
        this.message=function () {
            console.log("我叫"+this.name+","+"年龄是:"+this.age+","+"性别是:"+this.sex);
        };
    }
    //创建对象
    var person1=new Human("james",33,"男");
    person1.message();//我叫james,年龄是:33,性别是:男

    console.log(person1 instanceof Human);//true
</script>

var person1=new Human("james",33,"男");

  1. 在内存中开辟(申请一块空闲的空间)空间,存储创建的新的对象
  2. 把this设置为当前的对象
  3. 设置对象的属性和方法的值
  4. 把this这个对象返回

3.字面量的方式创建对象

<script>
    var obj = {};//创建了一个空对象
    obj.name = "rose";
    obj.age = 23;
    obj.sex = "女";
    obj.eat = function () {
        console.log("Eat");
    };
    obj.eat();

    var game = {
        name: "cs",//注意加逗号
        type: "fps",
        start: function () {
            console.log("开始游戏");
        },//注意加逗号
        end: function () {
            console.log("结束游戏");
        }
    };//注意加分号

    game.start();
    game.end();
</script>

设置和获取对象属性的另外一种写法

<script>
    function Person(name,age) {
        this.name=name;
        this.age=age;
        this.play=function () {
            console.log("喜欢玩游戏");
        };
    }
    var boy=new Person("小明",11);
    console.log(boy.name);
    boy.name="老铁";
    console.log(boy.name);

    boy["name"]="老王";
    console.log(boy.name);
    console.log(boy["name"]);
    boy["play"]();
</script>

JSON格式的数据

JSON格式的数据:一般都是成对的,是键值对,

json也是一个对象,数据都是成对的,一般json格式的数据无论是键还是值都是用双引号括起来的

var girl={//注意属性名要加双引号
  "name":"小红",//注意是逗号
  "age":18,
  "sex":"女",
};
console.log(girl.age);

遍历对象

可以通过for-in循环

for(var key in girl){
    console.log(key);
    console.log(girl[key]);
}
posted @ 2019-01-21 21:36  HzdWwZz"LJF  阅读(153)  评论(0)    收藏  举报