JS-JSON

JSON对象的创建

键 值
键的类型 都是字符串 值是任意类型
<script>
    var student = {
        "name": "张三",
        "age": 23,
        "sex": "男",
        "eat": function(str) {
        alert("吃饭" + str);
    	}
	}
</script>	

获取值的方式

键找值
方式一
    var name = student.name;
    student.eat("饺子");
方式二
	var age = student["age"];

嵌套 修改键值对

var person = {
    "name": "jack",
    "age": 18,
    "car": {
        "carName": "宝马",
        "carColor": "white",
        "carPrice": "888888"
    }
}
获取内层对象属性
var carName = person.car.carName;
修改键的值
person.name = "tom";
添加属性
person.sex = "女";
删除属性
delete person.age;

var shengFen = {
	"陕西省": ["西安", "商洛"],
}
var xiAn = shengFen.陕西省[0];

遍历对象

var student = {
    "name": "张三",
    "age": 23,
    "sex": "男",
    "eat": function(str) {
   		alert("吃饭" + str);
    }
}
遍历对象
for (key in student) {
	var value = student[key];
}

遍历数组
var arr = ["aaa", "bbb", "ccc", "ddd"];
for(index in arr){
	var ele = arr[index];
}

对象和字符串互转

JSON对象
var student = {
    "name": "张三",
    "age": 23,
    "sex": "男",
    "eat": function(str) {
    	alert("吃饭" + str);
    }
}

JSON对象-->JSON字符串
var studentStr = JSON.stringify(student);
alert(studentStr);

JSON字符串
要用紧凑的格式 不要有换行和空格 
键要使用双引号引起来
var jsonStr = '{"name": "张三","age": 23,"sex": "男"}';

JSON字符串-->JSON对象
var jsonObj = JSON.parse(jsonStr);
var jsonObjName = jsonObj.name;
alert(jsonObjName);

其他语言 比如JAVA 他要给前台返回JSON数据 只能以JSON字符串返回
前台收到后 转成JSON对象 取数据
JSON格式的字符串 就作为了网络传输 首选的数据格式 轻巧 利于阅读和解析

JSON数组

var arr = [{
        "name": "jack",
        "age": 33,
        "sex": "女"
    }, {
        "name": "tom",
        "age": 44,
        "sex": "女"
    }];
    
    var name = arr[1].name;//jack

    for (index in arr) {
    	//遍历数组获取JSON对象
        var jsonObj = arr[index];
        for (key in jsonObj) {
        	//遍历JSON对象 获取键值
            var value = jsonObj[key];
            alert(key + "---" + value);
    }
}

封装数据

封装数据
方式1
    var student = {
        "name": "张三",
        "age": 23,
        "sex": "男",
    }

方式2
    function Person(name,age,sex){
        //封装属性
        this.name = name;
        this.age = age;
        this.sex =sex;
        //封装功能
        this.eat = function(eatFood){
            alert(eatFood)
        }
    }
    
    var p1 = new Person("li",24,"男");
    var pName = p1.name;
    p1.eat("大米饭");
    var p2 = new Person("wang",20,"男");

方式3
    var obj = new Object();
    obj.name = "smith";
    obj.age = 12;
    obj.sal = 5000;
    console.log(obj);

this指向

Java中的this
this是实例方法中隐含的一个对象 那个对象调用该方法
方法中的this就代表这个对象

JS中的this
全局作用域 this代表window对象
	alert(this == window); //true
	
全局作用域 定义的函数 函数中的this 代表window对象
    function show() {
        alert(this);
    }
    window.alert(this == window); //true
    
事件处理函数中的this代表 绑定了该事件的对象
    var btn = document.getElementById("btn");
    btn.onclick = function() {
        alert(this == btn); //true
    }
    
构造函数中的this代表的就是你new的对象
    function Person(name, age, sex) {
        var myObj = this;
        //封装属性
        this.name = name;
        this.age = age;
        this.sex = sex;
        //封装功能
        this.eat = function() {
            return myObj;
        }
        var p1 = new Person("li", 24, "男");
        var myObj = p1.eat();
        alert(p1 == myObj); //true
    }

    var jsonObj = {
        "name": "jack",
        "sleep": function(obj) {
            alert(this == jsonObj); //true
        }
    }
	jsonObj.sleep(jsonObj);

定时器中的this 代表的是window对象
    var show2 = function(obj) {
        console.log(this); //window
    }
    setTimeout(show2(), 1000);

通过bind call 方法来改变this的指向
    var show3 = function(obj) {
        console.log(this.name); //window
    }
    setTimeout(show3.bind({
        "name": "王老五"
    }), 1000);

this指向例题
	var name = "小王";
    var age = 17;
    var obj = {
        "name": "小张",
        "objAge": this.age, //this->window
        "myFun": function() {
            console.log(this.name + " 年龄:" + this.age)
            //this->obj
        }
    }
    obj.objAge; //17
    obj.myFun(); //小张 年龄:undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值