详解js访问对象的属性和方法
程序员文章站
2023-10-23 19:25:49
对象的属性和方法统称为对象的成员。
访问对象的属性
在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; }