JavaScript基础(四)关于对象及JSON

对象介绍

  • 概念:对象是具体到某一个事物,具有一定的特征和行为。
  • 面向对象:可以创建自定义类型,支持继承和多态。JAVA/C++/C#
  • 基于对象:无法创建自定义类型,不能很好的支持继承和多态。 JavaScript(没有接口,抽象类等概念) 
  • JavaScript 创建对象一般用 new Object()或使用{}; 也可以自己写一个构造函数来创建对象。
    •   js对象是无序属性的集合;可看作键值对类型,值可以是数据可以是函数。
    •   属性可用obj . prop 或者obj[‘prop’]调用访问
  • 目的:封装一些数据
    //代码表示
    var dog = new Object();
    var cat= new Object();
    var o = {};
    dog.name='阿花';
    cat['name'] = '阿白';
    o.name = "张三";
    //调用属性方式
    console.log(dog.name);//阿花 
    console.log(dog['name']);// 阿花
    console.log(cat.name);//阿白
    console.log(cat['name']);//阿白
    console.log(o.name);//张三

this问题

  • 谁调用,this就是谁,this始终是当前对象。
  • window是js的顶级对象。

对象字面量和JSON

     //对象字面量
    var o = {
        name:"zs",
        age:18,
        have:{},
        say:function(){
            console.log("hello");
        }
    };
    //json JavaScript Object Notation
    //和对象字面量的区别,就是属性需要使用引号引起 一种规范
    var o1 = {
        'name':'ls',
        'sex':18
    }

forin(遍历数组或者对象)

    var obj = {
         name:"zs",
         age:18,
         have:{},
         say:function(){
             console.log("hello");
         }
     };

     for (var key in obj) {
         //输出属性名+属性值 name---zs,age---18...
         //如果写成obj.key或obj['key'],则报undefined错误
         console.log(key+'----'+obj[key]);

     }

基本类型/简单类型/复杂类型当参数

    //基本类型
    //只有栈,传递过程是把变量复制一份,修改函数内部变量,对外部变量无影响
    function  f1(x){
        x = 100;
    }
    var x = 1;
    f1(x);
    console.log(x);// 1

    //简单类型
    //同是复制栈上的地址,但指向同一个堆内存对象,无论操作谁,对象改变
    function f2(o){
        o.name = "zs1";
    }
    var obj = {
         name:"zs",
         age:18
    }
    f2(obj);
    console.log(obj.name);// zs1

    //复杂类型
    //复制栈地址,指向 堆的同一对象,修改对象,结果改变
    function f3(arr){
        arr[0] = 10;
    }
    var array = [1,2,3];
    f3(array);
    console.log(array);//10,2,3

 

posted @ 2019-07-15 13:36  readLive  阅读(233)  评论(2编辑  收藏  举报