详解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跨域请求的4种解决方式
Mar 17 Javascript
jquery.post用法之type设置问题
Feb 24 Javascript
基于jQuery实现表单提交验证
Nov 24 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
JavaScript文档碎片操作实例分析
Dec 12 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
Vue 过渡实现轮播图效果
Mar 27 Javascript
Javascript中的getter和setter初识
Aug 17 Javascript
详解React+Koa实现服务端渲染(SSR)
May 23 Javascript
Vue核心概念Action的总结
Jan 18 Javascript
js闭包的9个使用场景
Dec 29 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 开发工具
2006/12/06 PHP
php变量范围介绍
2012/10/15 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
Javascript的闭包详解
2014/12/26 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
拉丁舞学习者的自我评价
2013/10/27 职场文书
商场消防安全责任书
2014/07/29 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
工作失误检讨书
2015/01/26 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
vue实现Toast组件轻提示
2022/04/10 Vue.js