js中自定义对象

版权声明:本篇文章由IT_CREATE整理 https://blog.csdn.net/IT_CREATE/article/details/85072384

4.7 自定义对象

JS除了内置对象之外,还允许我们程序自己定义属于我们自己的对象,在JS中自定义对象的方式有2种:通过构造器创建对象,通过JSON创建对象。

 

4.7.1 构造器创建对象(原生JS对象)

构造器,就是一个普通的函数,函数中可以定义0到N个参数,具体的代码如下:

/*对象构造器,就是一个普通函数*/
    function Student(stuName,age,password,gender){
       /*定义对象的属性*/
        this.stuName = stuName;
        this.age = age;
        this.password = password;
        this.gender = gender;

        /*定义对象的方法*/
        this.study = function(){
            console.log(this.stuName + "写的方法!")
        }
    }

 

4.7.1.1 创建对象

//使用该对象
// var stu = new Student("胡帅",18,'123456',1);
    var stu = new Student();
    stu.stuName = "胡帅";
    stu.age = 18;
    stu.gender = 1;
    stu.password = "123456";

 

4.7.1.2 动态添加属性和行为

//如果需要给胡帅这个对象,动态的添加属性
    Student.prototype.address = null;
    stu.address = "九眼桥1号桥洞!";

    //如果需要给胡帅这个对象,动态的添加行为
    Student.prototype.playGame = function(game){
        console.log(this.stuName + "玩[" + game +"]游戏!")
    }

4.7.1.3 使用对象

console.log(stu)
stu.study();//调用胡帅学习的行为
stu.playGame("老鹰捉小鸡");

//调用某一个属性
console.log(stu.stuName)

 

4.7.2 通过JSON创建对象

/*使用JSON格式创建一个新的对象*/
var stu = {
    /*定义对象的属性*/
    stuName: "胡帅",
    age: 18,
    gender: 1,
    password: "123456",
    /*定义对象的行为*/
    study: function () {
        console.log(this.stuName + "正在格智学习JAVA!");
    }
};
//使用学生对象
console.log(stu.stuName);

//定义一个对象,对象属性中可以包含其他对象,如下面的妻子,和他儿子
var person = {
    userName: "胡帅",
    wife: {userName: "赵铁锤", age: 28},
    sons: [{userName: "狗蛋儿"}, {userName: "二狗蛋"}, {userName: "小狗蛋"}],
    kiss: function () {
        console.log(this.userName + "给他妻子" + this.wife.userName + "说:妹妹,来波尔一个!!!")
    },
    gun: function () {
        console.log(this.userName + "给他的儿子说:儿子,去玩泥巴!!!")
    }
};

/*Json对象的行为调用*/
person.gun();
person.kiss();

 

4.7.3 JSON简单介绍

JSON在JS中,也是一种对象的描述方式,它的作用跟XML描述对象的一样。只不过XML描述对象更加复杂,解析起来更加困难,所以我们一般推荐大家使用JSON来描述一个对象,它是一种轻量级的文本数据转换格式。

 

它跟XML都是常见的数据描述手段,但是它们区别在于:

  1. 它不需要像XML那样去定义一系列的标签,也不需要提供对应的标签解析程序
    2、它的内容更短更小,传输时花费的网络代价就非常的小,传输速度也就更加的快

3、它除了可以正常描述属性和方法以外,还可以描述其他对象和数组[JSONArray]

比如wife以及sons:

//定义一个对象,对象属性中可以包含其他对象,如下面的妻子,和他儿子
var person = {
    userName: "胡帅",
    wife: {userName: "赵铁锤", age: 28},
    sons: [{userName: "狗蛋儿"}, {userName: "二狗蛋"}, {userName: "小狗蛋"}],
    kiss: function () {
        console.log(this.userName + "给他妻子" + this.wife.userName + "说:妹妹,来波尔一个!!!")
    },
    gun: function () {
        console.log(this.userName + "给他的儿子说:儿子,去玩泥巴!!!")
    }
};

 

4.7.3.1 JSON的语法

  1. 所有的数据都是以KV键值对结构方式存在
    2、KV键值对需要使用冒号分割,每个成对的KV键值对需要使用逗号进行分割
    3、花括号来描述一个完整的JSON对象

4、花括号来描述一个完整的JSON对象
5、中括号来描述一个完成的JSONArray,数组对象

 

4.7.3.2 JSON的使用

Json对象的使用,很简单,语法如下.:
jisonObject.属性名|方法名();

 

4.7.3.3 JSON文本转换为JSON对象

JSON格式在很多地方,都需要使用到,比如:前后台的数据交互,分布式系统的数据交互,其他系统的数据交互(京东万象、百度地图 ......)

 

但是一般他们返回的结果,都是JSON格式的字符串,如何将JSON格式的字符串转换为JSON对象,在JS中,需要使用到eval(),该函数的最大作用,就是将字符串代码识别成脚本代码并进行执行

比如:

下面的代码为转换代码:

//返回JSON格式的字符串对象
 var text = '{stuName:"胡帅",age:18,gender:1,password:"123456"}';
 console.log(text);
 var obj = eval("(" + text +")");//将JSON格式的字符串,转换为JS对象
console.log(obj);//在控制台输出JS对象

猜你喜欢

转载自blog.csdn.net/IT_CREATE/article/details/85072384