详解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 页面传参数时 参数值含特殊字符的问题
Dec 13 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
js/jq仿window文件夹框选操作插件
Mar 08 Javascript
React服务端渲染(总结)
Jul 01 Javascript
express如何使用session与cookie的方法
Jan 30 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 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实现把数字ID转字母ID
2013/08/12 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
javascript的几种写法总结
2016/09/30 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
vue实现购物车的监听
2020/04/20 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
python求crc32值的方法
2014/10/05 Python
用python读写excel的方法
2014/11/18 Python
python使用7z解压apk包的方法
2015/04/18 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
在家更换处方镜片:Lensabl
2019/05/01 全球购物
应届生护士求职信
2013/11/01 职场文书
高校学生干部的自我评价分享
2013/11/04 职场文书
《分一分》教学反思
2014/04/13 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
风之谷观后感
2015/06/11 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Python机器学习之基础概述
2021/05/19 Python
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python