JavaScript訪問物件的屬性和方法

大嘴怪獸發表於2018-10-19

物件的屬性和方法統稱為物件的成員。

訪問物件的屬性

在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;
}

相關文章