• 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;
    }
  • 相关阅读:
    数据表列名与数据库关键字冲突,在Hibernate下的解决办法
    Ubuntu12.04 MySQL服务器乱码问题的解决办法
    Linux实时将所有输出重定向到文件
    vue Element UI 导航高亮
    Js计算时间差
    Js时间处理
    Vue设置导航栏为公共模块并在登录页不显示
    Vue中表单校验
    Vue中div高度自适应
    Vue引入js、css文件
  • 原文地址:https://www.cnblogs.com/yyjbk/p/9816717.html
Copyright © 2020-2023  润新知