详解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 03 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
May 07 Javascript
使用jquery 简单实现下拉菜单
Jan 14 Javascript
js正则表达式验证邮件地址
Nov 12 Javascript
JS代码实现百度地图 画圆 删除标注
Oct 12 Javascript
原生JS和jQuery操作DOM对比总结
Jan 19 Javascript
JavaScript仿微信打飞机游戏
Jul 05 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
vue webpack打包优化操作技巧
Feb 22 Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 Javascript
node使用promise替代回调函数
May 07 Javascript
Vue.extend 登录注册模态框的实现
Dec 29 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
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
初识Node.js
2014/09/03 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
Python装饰器用法与知识点小结
2020/03/09 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
简历中求职的个人自我评价
2013/12/03 职场文书
环保倡议书范文
2014/05/12 职场文书
借款担保书范文
2014/05/13 职场文书
情人节活动总结范文
2015/02/05 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
导游词之西安骊山
2019/12/03 职场文书