zoukankan      html  css  js  c++  java
  • javascript数据类型之对象

    1 对象

    1.1 创建对象

    /* use Object method:new */
    var car = new Object();
    
    /* give a 对象实例 directly */
    var car = {};
    

    1.2 属性和方法

    ---
    var car = {
        color : "red",
        run(){alert("run")}
    };
    ---
    //ES6更简洁的表示
    var name = "zhangsan";
    var age = 12;
    var person = {name,age};
    console.log(person);//{name:"zhangsan",age:12}
    ---
    /* 访问属性和方法 */
    car.color;//red
    car.run();//alert("run")
    car["color"];//red
    car["run"]();//alert("run")
    
    /* 增加属性和方法 */
    car.type = "suv";
    car.stop = function(){alert("stop")};
    
    /* 修改属性和方法 */
    car.color = "white";
    car.run = function(){alert("run2")};
    
    /* 删除属性和方法 */
    delete car.color;
    car.color; //undefined
    
    //属性名可以是表达式
    //字面量(大括号{ })定义对象的时候,属性名和方法名可以是一个表达式,表达式的运算结果就是属性名或者方法名。这点改进会使得对象在实际开发中的使用变得更加的灵活方便,
    var f = 'first';
    var n = 'name';
    var s = 'say';
    var h = 'hello';
    var person = {
        [f+n]:'zhang',
        [s+h](){
            return 'nihao';
        }
    };
    console.log(person.firstname);//zhang
    console.log(person.sayhello);//nihao
    

    1.3 构造函数查询 obj.constructor

    /* obj.constructor */
    var car = {
        color : "red",
        run : function(){alert("run")}
    };
    car.constructor;//Object
    
    var num = new Number(123);
    num.constructor;//Number
    

    1.4 对象字符串化 obj.toString()

    /* obj.toString() */
    var num = new Number(123);
    num.toString();//"123"
    

    1.5 对象值查询 obj.valueOf()

    /* obj.valueOf() */
    var num = new Number(123);
    num.valueOf();//123
    

    1.6 对象属性存在查验

    var car = {
        color : "red",
        run : function(){alert("run")}
    };
    car.hasOwnProperty("color");//true
    car.hasOwnProperty("logo");//false
    

    1.7 对比两个值是否严格相等 Object.is()

    var str = '12';
    var num = 12;
    var num2 = 12;
    Object.is(str,num);//false
    Object.is(num,num2);//true
    

    1.8 将源对象的属性赋值到目标对象上 Object.assign(target,origin1,[origin2,...])

    let target = {'a':1};
    let origin = {'b':2,"c":3};
    let origin2 = {"d":4};
    let origin3 = {'a':8};
    Object.assign(target,origin);
    console.log(target);//{a:1,b:2,c:3}
    Object.assign(target,origin,origin2);
    console.log(target);//{a:1,b:2,c:3,d:4}  //可以有多个源对象
    object.assign(target,origin3);
    console.lgo(target);//{a:8} 相同属性,后面的属性值就会覆盖前面的属性值
    

    1.9 获取对象的prototype属性 Object.getPrototypeOf(obj)

    //Object.getPrototypeOf() 获取一个对象的prototype属性
    function Person(){};
    Person.prototype = {
        say(){console.log('nihao')};
    }
    var Lu = new Person();
    Lu.say();//'nihao'
    Object.getPrototypeOf(Lu);//say:function(){console.log('nihao')}
    

    1.10 设置对象的prototype属性 Object.setPrototypeOf(obj,fn)

    //Object.setPrototypeOf() 设置一个对象的prototype属性
    Object.setPrototypeOf(
        Lu,
        {say(){console.log('hi')}
    });
    Lu.say();//hi
    
  • 相关阅读:
    django 参考
    数据库答案
    django -- form表单
    django ajax
    Django----中间件详解
    ORM中自定义一个char类型字段
    北理工《网站设计与开发实践》在线作业 附答案
    正则表达式 ?P<name>
    Django模板语言相关内容
    【CSS】 布局之多列等高
  • 原文地址:https://www.cnblogs.com/luwanlin/p/14301047.html
Copyright © 2011-2022 走看看