zoukankan      html  css  js  c++  java
  • JavaScript访问对象的属性和方法

    对象的属性和方法统称为对象的成员。

    访问对象的属性

    在JavaScript中,可以使用“ . ”和“ [ ] ”来访问对象的属性。

    二者区别:“ . ”表示法一般作为静态对象使用时来存取属性。而“[ ]”表示法在动态存取属性时就非常有用。

    var object = {name:'xiaoming',age:29};
    var name1 = object.name;
    var name2 = object['name'];

    访问对象的方法

    在JavaScript中,只能用“ . ”来访问对象的方法。

    function Person(){
        this.name = 'xiaoming';
        this.age = 29;
        this.say = function(){
            alert('This is person');
        }          
    }
    var student = new Person();
    alert(student.name);
    alert(student['age']);
    student.say();  //使用" . "访问对象方法

    引申出的两个题目:

    1.判断一个字符串中出现次数最多的字符,统计这个次数

    var str = 'Thisthebesttimesewerty';
    var obj = {};
    for(var i=0; i<str.length;i++){
        var char = str[i];
    // var char = str.charAt(i); //charAt()可返回指定位置的字符,i为字符的下标,从0开始 if(obj[char]){ obj[char]++; //char是obj对象的一个属性,如果存在次数加1 }else{ obj[char] = 1; //如果不存在,保存在obj中并计数为1 } } var max = 0; var maxChar = null; for(var key in obj){ if(max < obj[key]){ max = obj[key]; //出现最多次数max maxChar = key; //出现次数最多的字符maxChar } }

    2.编写arraysSimilar函数,实现判断传入的两个数组是否相似。

        具体需求:

        1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。

        2. 数组的长度一致。

        3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.

       当以上全部满足,则返回"判定结果:通过",否则返回"判定结果:不通过"。

    function arraysSimilar(arr1,arr2){
        if(!(arr1 instanceof Array) || !(arr2 instanceof Array)){
             return false;
        }   
        if(arr1.length !== arr2.length){
             return false;
        }
    
        var i=0, n=arr1.length, countMap1={}, countMap2 = {}, t1, t2,
        TYPES = ['string','boolean','number','undefined','null','function','date','window'];
    
        for(i; i<n; i++){
             t1 = typeOf(arr1[i]);
             t2 = typeOf(arr2[i]);
             if(countMap1[t1]){
                 countMap1[t1]++;
             }  else{
                 countMap1[t1] = 1;
             }
    
            if(countMap2[t2]){
                 countMap2[t2]++;
             }  else{
                 countMap2[t2] = 1;
             }
        }
     
        for(i=0; i<TYPES.length; i++){
            if(countMap1[TYPES[i]] != countMap2[TYPES[i]]){
                return false;
            }
        }
        return true;
    }
    
    function typeOf(ele){
        var r;
        if(ele === null){
            r = 'null';
        }
        else if(ele === 'window'){
            r = 'window';
        }
        else if(ele instanceof Array){
            r  = 'array';
        }
        else if(ele instanceof Date){
            r = 'date';
        }
        else{
            r = typeof(ele);
        }
        return r;
    }
  • 相关阅读:
    关于Oracle 数据库使用dba_tables或者all_tables或者user_tables统计数据时,与直接查询表统计时数据不一致的记录
    js格式化时间
    slf4j介绍以及与Log4j、Log4j2、LogBack整合方法
    LogBack日志小记
    log4j2 日志框架小记
    Log4j日志框架小记
    29.求数字组最大子序列之和
    28.找出最的几位数
    27.数组元素重复度过数组长度一半
    26.字符串全排列
  • 原文地址:https://www.cnblogs.com/yyjbk/p/9816717.html
Copyright © 2011-2022 走看看