zoukankan      html  css  js  c++  java
  • JavaScript内置对象-Object

    ▓▓▓▓▓▓ 大致介绍

      JavaScript的简单数据类型包括:Undefined、Null、Boolean、Number、String。JavaScript中这五种基本数据类型不是对象,其他所有值都是对象。其中还有一些对象子类型,通常被称为内置对象(引用类型)

        1、Object

        2、Array

        3、Date

        4、RegExp

        5、Function

        6、Boolean

        7、Number

        8、String

    ▓▓▓▓▓▓ 创建对象的三种方法

      创建对象有三种方法:

        1、对象字面量,即用{}生成,一个对象字面量就是包围在一对花括号中的零个或多个“名/值”对

        2、构造函数,利用Object()构造函数生成

        3、Object().create方法生成

        注意:推荐第一种写法,第三种方法多用在继承的场合

            var myobj = {
                key : value;
            }
    
            var myobj = new Object()
            myobj.key = value;
    
            var myobj = Object.create(Object.prototype);
            myobj.key = value;

     

    ▓▓▓▓▓▓ 引用

      对象通过引用来传递,它们永远不会被复制。简单来说就是多个变量指向同一个对象,那么他们都是这个对象的引用,多个变量它们都指向同一个内存地址,如果通过一个变量修改了指向的对象,那么所有指向这个对象的变量都会发生改变

            var o  = {
                name : 'laowang'
            };
    
            var b = o;
            b.name = 'liu';
            console.log(o.name); //liu

    ▓▓▓▓▓▓ 属性操作

      读取属性

      读取对象的属性有两种方法,一种是用点运算符,另一种是用方括号运算符

            var o  = {
                name : 'laowang'
            };
    
            o.name; //'laowang'
            o['name']; //'laowang'

      

      注意:点操作符要求属性名满足标示符的命名规范,而方括号运算符的方式可以接受任何字符串作为属性名

      例如:

            var o  = {
                name : 'laowang',
                'super-f' : 2
            };
    
            console.log(o.super-f); //报错
            console.log(o['super-f']); //2

      可以在方括号中括住一个字符串表达式的方式来访问属性

            var o  = {
                name1 : 'laowang',
                name2 : 'liaomou',
                name3 : 'PDD'
            };
    
            for(var i=1;i<4;i++){
                console.log(o['name'+i]);//laowang liaomou PDD
            };

      在对象中,属性名永远都是字符串,如果你使用String以外的其他值作为属性名,那他首先会被转换为一个字符串。即使是数字也不例外

            var myObject = {};
    
            myObject[true] = 'foo';
            myObject[2] = 't';
    
            myObject['true']; //"foo"
            myObject['2']; //"t"

      

      写入属性

      可以用点运算符和方括号运算符写入属性

            var myObject = {
                name : 'laowang'
            };
    
            //两种方法的效果是一样的
    
            var myObject = {};
            myObject.name = 'laowang';
            myObject[name] = 'laowang';

      

      

      查看属性

      可以使用Object.keys()方法

            var myObject = {
                name : 'laowang',
                address : '西青区'
            };
    
            console.log(Object.keys(myObject)); //["name", "address"] 

      删除属性

      删除属性可以用delete运算符,它不会触及原型链中的任何对象,删除对象的属性可能会让来自原型链中的属性透现出来

            var myObject = {
                name : 'laowang',
                address : 'xi'
            };
    
            var anotherObject = Object.create(myObject);
            anotherObject.name = 'xiaoma';
            console.log(anotherObject.name);
    
            delete anotherObject.name;
            console.log(anotherObject.name); //laowang  删除了自己本身的属性,透现出来了原型的属性
    
            delete anotherObject.address;
            console.log(anotherObject.address); //xi 不会删除原型中的属性

      检测属性是否存在

      我们要检测一个属性是否在对象中,可以使用in操作符

            var myObject = {
                name : 'laowang',
                address : 'xi'
            };
    
            console.log('name' in myObject); //true
            console.log('sex'in myObject); //false

      注意:in操作符会检查属性是否在对象及原型链中,如果要检测一个属性是否在对象中,不涉及原型链,可以使用hasOwnProperty()

            var myObject = {
                name : 'laowang',
                address : 'xi'
            };
    
            var anotherObject = Object.create(myObject);
    
            console.log('name' in anotherObject); //true
            console.log(anotherObject.hasOwnProperty('name')); //false

      遍历属性

      有时需要遍历一个对象的所有属性,可以使用for..in语句

            var myObject = {
                name : 'laowang',
                address : 'xi',
                sex : 'man'
            };
    
            for(var i in myObject){
                console.log(myObject[i]); //laowang xi man 
            };

      注意:for..in语句会遍历对象的可枚举属性,包括原型链

      例如:

            var myObject = {
                name : 'laowang',
                address : 'xi',
                sex : 'man'
            };
    
            //让myObject的name属性变得不可枚举
            Object.defineProperty(
                    myObject,
                    'name',
                    {enumerable:false}
                );
    
            for(var i in myObject){
                console.log(myObject[i]); //xi man
            };

       如果想要过滤掉那些你不想要的值,最为常用的过滤器是hasOwnProperty方法,以及使用typeof来排除函数

     

    参考资料:

          阮一峰JavaScript标准参考教程(alpha)-语法-对象

          JavaScript语言精粹第三章

          你不知道的JavaScript(上卷)第三章

          JavaScript高级程序设计(第三版)第五章 Object类型

  • 相关阅读:
    JAVA面试题
    Io流
    初识线程池
    理解事务的4种隔离级别
    简单认识Git与GitHub
    JAVA自动装箱和拆箱
    代码块以及他们的执行顺序
    反射机制
    java Excel表格
    访问修饰符的含义分析
  • 原文地址:https://www.cnblogs.com/qqandfqr/p/6441078.html
Copyright © 2011-2022 走看看