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

访问对象的属性

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

最新文章

  1. SASS教程sass超详细教程
  2. [故障公告]受阿里云部分ECS服务器故障影响,目前无法上传图片与文件
  3. 设计模式(四)抽象工厂模式(Abstract Factory Pattern)
  4. java数据库连接池技术原理(浅析)
  5. setInterval()与clearInterval()的一个有趣小现象
  6. ThreadLocal解析
  7. iOS 瀑布流的基本原理
  8. C#获取相对路径
  9. android 图片叠加效果——两种方法
  10. hdu 4612 Warm up 桥缩点
  11. javascript原型prototype的一个你不一定知道的理解
  12. aop动态代理学习
  13. 求斐波那契数列的第n项
  14. MIME协议在邮件中的应用详解
  15. CentOS7完成mysql的安装和远程访问
  16. 圆形进度条css3样式
  17. Your local changes to the following files would be overwritten by merge:
  18. 【译】第五篇 SQL Server安全架构和安全
  19. linux硬盘挂载-新硬盘挂载和扩容硬盘挂载
  20. HTTPS 通讯流程

热门文章

  1. FlowPortal-BPM——文件目录功能
  2. k-近邻算法 python实现
  3. github访问慢加速访问
  4. Java代码度量分析工具:Designite简介
  5. 完美解决Bootstrap4 导航栏 fixed-top 后,锚点定位时遮挡问题
  6. springcloud(五)-Ribbon
  7. xenu简单介绍
  8. Mac OS X中Launchpad的图标添加删除方法(添加方法别试了,和Linux很大区别)
  9. IE8下不识别indexOf的问题
  10. Spring Boot的filter简单使用