详解js访问对象的属性和方法


Posted in Javascript onOctober 25, 2018

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

访问对象的属性

在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;
}
Javascript 相关文章推荐
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
JS格式化数字保留两位小数点示例代码
Oct 15 Javascript
在每个匹配元素的外部插入新元素的方法
Dec 20 Javascript
基于bootstrap插件实现autocomplete自动完成表单
May 07 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
May 24 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
Bootstrap CSS布局之表格
Dec 17 Javascript
webpack入门+react环境配置
Feb 08 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
Jun 28 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 Javascript
深入浅析js原型链和vue构造函数
Oct 25 #Javascript
AngularJS 多指令Scope问题的解决
Oct 25 #Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 #jQuery
webpack打包非模块化js的方法
Oct 24 #Javascript
如何实现一个webpack模块解析器
Oct 24 #Javascript
vue项目中使用Svg的方法
Oct 24 #Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
Oct 24 #Javascript
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php输入数据统一类实例
2015/02/23 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
js function定义函数使用心得
2010/04/15 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
python基于socket实现网络广播的方法
2015/04/29 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
Python如何使用函数做字典的值
2019/11/30 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
浅析Python的命名空间与作用域
2020/11/25 Python
蔻驰法国官网:COACH法国
2018/11/14 全球购物
新闻学专业求职信
2014/07/28 职场文书
2014年项目工作总结
2014/11/24 职场文书
合作与交流自我评价
2015/03/09 职场文书
学校捐款活动总结
2015/05/09 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python