详解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弹出确认是否删除对话框
Mar 27 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
jQuery实现切换字体大小的方法
Mar 10 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
VUEJS实战之修复错误并且美化时间(2)
Jun 13 Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 Javascript
vue.js指令v-for使用及索引获取
Nov 03 Javascript
使用angular-cli webpack创建多个包的方法
Oct 16 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
vue-cli中使用高德地图的方法示例
Mar 28 Javascript
React更新渲染原理深入分析
Dec 24 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
微信API接口大全
2015/04/15 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
js静态作用域的功能。
2006/12/25 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
js 走马灯简单实例
2013/11/21 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
Node对CommonJS的模块规范
2019/11/06 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
Python isinstance判断对象类型
2008/09/06 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
戴尔美国官网:Dell
2016/08/31 全球购物
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
环保建议书作文
2014/03/12 职场文书
法定代表人身份证明书
2014/09/10 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
2016年春节问候语
2015/11/11 职场文书
2019年最新借条范本!
2019/07/08 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang