详解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 相关文章推荐
js中将字符串转换成json的三种方式
Jan 12 Javascript
基于jquery的多功能软键盘插件
Jul 25 Javascript
js函数调用常用方法详解
Dec 03 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
js数组依据下标删除元素
Apr 14 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
jquery html动态添加的元素绑定事件详解
May 24 Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 Javascript
JS中parseInt()和map()用法分析
Dec 16 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 Javascript
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
深入浅析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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
COM in PHP (winows only)
2006/10/09 PHP
PHP语法速查表
2006/12/06 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
围观tangram js库
2010/12/28 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
vue基础之事件v-onclick=&quot;函数&quot;用法示例
2019/03/11 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
layui 弹出删除确认界面的实例
2019/09/06 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
python发送告警邮件脚本
2018/09/17 Python
django的model操作汇整详解
2019/07/26 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
校庆口号
2014/06/20 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js