详解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 相关文章推荐
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
JavaScript实现三阶幻方算法谜题解答
Dec 29 Javascript
javascript 中的事件委托详解
Oct 25 Javascript
Jqprint实现页面打印
Jan 06 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
AngulerJS学习之按需动态加载文件
Feb 13 Javascript
详解webpack介绍&amp;安装&amp;常用命令
Jun 29 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
vue-router懒加载速度缓慢问题及解决方法
Nov 25 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 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获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
php封装的page分页类完整实例
2016/10/18 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
Python制作爬虫抓取美女图
2016/01/20 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
基于Python绘制个人足迹地图
2020/06/01 Python
sklearn的predict_proba使用说明
2020/06/28 Python
python与pycharm有何区别
2020/07/01 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
大学生求职推荐信
2013/11/27 职场文书
创业计划书中要认真思考的问题
2013/12/28 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
学期自我评价
2014/01/27 职场文书
毕业生面试求职信
2014/06/23 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
解除处分决定书
2015/06/25 职场文书
导游词之日月潭
2019/11/05 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
Python requests用法和django后台处理详解
2022/03/19 Python