• js中的对象(object:对象和数组)以及对象的常用方法


    对象的本质和意义:(object)

    对象是一个整体,用于描述一个事物的所有的相关信息

    内容之间用“,”分隔,最后一个不加逗号

    对象中一般有属性(静态)和方法(动态,方法是作为属性来存储的函数。):

    你可以想象成对象就是一个人,这个人的身高,体型,性格是他本身的属性,是静态的;而这个人喜欢打篮球,喜欢吃东西,这就是他的动作也就是方法,是动态的;

    使用{ }去定义一个对象,数据由键值对的组合方式;值可以是任意数据类型;

    var obj = {
    
        sex : "不详",
    
        socre : 100,
    
        flag : true,
    
        sing : function{
           console.log("爱唱歌")
          },
    
        play : function{
           console.log("打游戏")
          }
    
      }

    对象的操作: 访问值:(查) console.log(obj.sex); console.log(obj[
    "socre"]); console.log(obj.sing()); 添加一个属性:(增) obj.hobby = "睡觉"; obj["weight"] = “50kg”; obj.dance = function(){   } 修改:(改) obj.sex = “女”; obj[“socre”] = 99; 删除:(删) delete obj.flag; delete obj["sex"];

      访问属性的时候,可以用obj.属性或者obj["属性"];需要执行方法(了解这个人)的时候,需要用“.”的方式去调用。

     

    W3C的官网文档中提到:

     如果通过关键词 "new" 来声明 JavaScript 变量,则该变量会被创建为对象:

    
    
    var x = new String();        // 把 x 声明为 String 对象
    var y = new Number();        // 把 y 声明为 Number 对象
    var z = new Boolean();       //    把 z 声明为 Boolean 对象

    请避免将字符串、数值或逻辑声明为对象。他们会增加代码的复杂性并降低执行速度

     

      扩展

    JavaScript有3大对象,分别是本地对象内置对象宿主对象;

      这里引用别人的话:本地对象也经常被叫做原生对象或内部对象,包含Global和Math在内的内置对象在《JavaScript高级程序设计》里也被叫做单体内置对象,很多时候,干脆也会直接把本地对象和内置对象统称为“内置对象”,也就是说除了宿主对象,剩下的都是ECMAScript的内部的“内置”对象。

     

      这里说说内置对象:
      JS内置对象也被称为内部类。所谓的内部类,就是JavaScript里面封装好了的类(也就是我们不需要去自己写,可以拿过来用)。

     

      JavaScript中的内部类大致有:Array,Boolean,Date,Math,Number,String,RegExp.....

     

    可以分为两类:静态类和动态类

     

      静态类:不需要new,直接调用这个类的属性或方法即可,例如:Math    Math.pow()

     

      动态类:需要new,然后再调用对象的方法或者属性  var arr =  new Array(4,5,6);   arr.push()
     
     

    数组就是一组数据的集合

    js中数组的特点:(有下标,从0开始;有长度,length)

    ①数组定义时无需指定数据类型;

    ②数组定义时可以无需指定数组长度;

    ③数组可以存储任何数据类型的数据;

    ④一般是相同的数据类型。

     

    数组的创建方式:

    ①字面量定义:var arr = [值1,值2,值3];(数组文本方法)

    ②构造函数创建:new Array(值1,值2,值3);            //当括号中没有值的时候,打印结果为[ ](空数组);

       创建数组并指定长度(只有一个值的时候为起初的长度,可自己增加值来改变这个长度):new Array(size);

      W3C中提出,出于简洁、可读性和执行速度的考虑,请使用第一种方法(数组文本方法)

     

    var ary = new Array(4);
    
    ary[0] = 12;
    
    ary[1] = 13;
    
    ary[2] = 14;        //加入值      数组名[下标] = 值 
    
    长度为4,只加入了三个值,则第四个值为undefined;

     

    数组操作

    数组名.方法

        1)push(5,4,3)--向数组末尾添加新的数组项,返回值新数组的长度,原数组改变  
             2)pop()--删除数组最后一项,没有参数,返回值删除项,原数组改变              
             3)unshift()--向数组开头位置添加,返回值是新数组的长度,原数组改变                    
             4)shift()--删除数组第一项,没有参数,返回值删除项,原数组改变 
     
            (以下是扩展方法) :                        
             5)splice()--原数组改变             
              splice(n,m)--从索引(下标)n开始,删除m个,返回值以数组的形式返回删除项          
                   splice(n)--从索引n开始删除到最后             
                   splice(0)--原数组清空,返回一个和原来一样的新数组            
                   splice(n,m,z);从索引(下标)n开始,删除m个,把z添加到删除的位置                                 
             6)slice(n,m)--从索引n开始,查找到索引m处,不包含m,将查找到的以新数组返回,原数组不变                        
             7)concat--数组的拼接,不改变数组,返回最终连接好的新数组;                                
             8)数组转为字符串:不改变原数组             
                  toString()        join('符号')         (数组.join()可以直接转数组)
     
    清空数组的方式:
    ①arr.splice(0);
    ②arr.length = 0;
    ③arr = [ ];
     
    数组的遍历:
    for , for...in
    数组可以使用for循环遍历  
    也可以使用for...in遍历  一般使用for...in
    for-in的特点:
         没有循环条件 
         自动取出下标,
         下标默认从 0 开始 ,最大下标  数组长度-1
         下标的类型为string
     
     
    当需要返回两个值时,可以用对象{ }或数组[ ]的形式返回;
    只能用for...in遍历对象,for不能遍历对象;(因为对象的键是一个变量)在遍历时[ ]中不能加引号;
     
    一些数组类型:
    整数数组 :  [12,3,4,5,6]
    字符串数组 : ["orange","apple","pear"]
    对象数组 : [{sname:"jack",age:19},{sname:"lily",age:18}]
    二维数组 : [[1,3,4],[5,6,7],[1,2,5]]   (一个数组的每一项都是一个数组)
        

    数组和对象的区别

    在 JavaScript 中,数组使用数字索引。

    在 JavaScript 中,对象使用命名索引。

    数组是特殊类型的对象,具有数字索引。

     

    在数组中使用数字(下标)来访问其“元素”。

    在对象使用名称(属性名称和方法名称)来访问其“成员”。

     

         在数据类型检验的时候,利用typeof来检验数组的时候说过会返回一个object;那么怎么检验一个数是不是数组呢;

         ①为了解决这个问题,ECMAScript 5 定义了新方法 Array.isArray()

    Array.isArray(fruits);     // 返回 true

        ②也可以自己封装出一个isArray方法

    function isArray(x) {
        return x.constructor.toString().indexOf("Array") > -1;
    }

         ③假如对象由给定的构造器创建,则 instanceof 运算符返回 true:

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
     
    fruits instanceof Array     // 返回 true

          ④最准确的数据类型的判断Object.prototype.toString.call()

    let a = "string";
    let b = 111;
    let c = {};
    let d = [1, 2, 3];
    let e = function () {
        console.log("eee");
    }
    let f = undefined;
    let g = null;
    let h = new Date();
    let i = /test/;
    let j = true;
    
    console.log(Object.prototype.toString.call(a) === '[object String]');//true
    console.log(Object.prototype.toString.call(b) === '[object Number]');//true
    console.log(Object.prototype.toString.call(c) === '[object Object]');//true
    console.log(Object.prototype.toString.call(d) === '[object Array]');//true
    console.log(Object.prototype.toString.call(e) === '[object Function]');//true
    console.log(Object.prototype.toString.call(f) === '[object Undefined]');//true
    console.log(Object.prototype.toString.call(g) === '[object Null]');//true
    console.log(Object.prototype.toString.call(h) === '[object Date]');//true
    console.log(Object.prototype.toString.call(i) === '[object RegExp]');//true
    
    console.log(Object.prototype.toString.call(c) === '[object Object]');//true
    console.log(Object.prototype.toString.call(d) === '[object Object]');//false
    console.log(Object.prototype.toString.call(e) === '[object Object]');//false

       Array.from(对象)可以将一个具有length长度的类数组(伪数组)转换成真正的数组。

  • 相关阅读:
    Java 8特性
    11成最多体积的容器
    MySQL数据库理解
    java范型
    ArrayList源码分析
    1.面试题
    jvm简单了解
    121. 买卖股票的最佳时机
    有效的括号
    java如何判断一个字符串中某个字符有几个
  • 原文地址:https://www.cnblogs.com/cqdd/p/10191356.html
Copyright © 2020-2023  润新知