详解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 Ajax文件上传(php)
Jun 16 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
javascript实现youku的视频代码自适应宽度
May 25 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
Dec 04 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
Feb 27 Javascript
vue组件 $children,$refs,$parent的使用详解
Jul 31 Javascript
AngularJs 延时器、计时器实例代码
Sep 16 Javascript
javaScript实现滚动条事件详解
Mar 24 Javascript
详解webpack提取第三方库的正确姿势
Dec 22 Javascript
Vue前端开发规范整理(推荐)
Apr 23 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
Sep 20 Javascript
关于JSON解析的实现过程解析
Oct 08 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
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
使用Javascript简单计算器
2018/11/17 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
Python写的英文字符大小写转换代码示例
2015/03/06 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
Python中str.join()简单用法示例
2018/03/20 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
详解Python文件修改的两种方式
2019/08/22 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
财务部岗位职责
2013/11/19 职场文书
机械设计专业应届生求职信
2013/11/21 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
800字作文之大雪
2019/12/04 职场文书