详解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 27 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
浅谈轻量级js模板引擎simplite
Feb 13 Javascript
javascript实现查找数组中最大值方法汇总
Feb 13 Javascript
基于jQuery实现收缩展开功能
Mar 18 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
JavaScript编写九九乘法表(两种任选)
Feb 04 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
Vue中component标签解决项目组件化操作
Sep 04 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根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
python命令行参数sys.argv使用示例
2014/01/28 Python
Python实时获取cmd的输出
2015/12/13 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
python使用配置文件过程详解
2019/12/28 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Python连接Impala实现步骤解析
2020/08/04 Python
pytorch中index_select()的用法详解
2021/01/06 Python
大门门卫岗位职责
2013/11/30 职场文书
比较node.js和Deno
2021/04/27 Javascript
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
python利用while求100内的整数和方式
2021/11/07 Python
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL