[js学习]对象

8 篇文章 0 订阅

js学习day3

对象

创建对象

  • 利用对象字面量创建对象:
    -var obj={
    uname: “didi”,
    age: 18,
    say: function(){
    console.log(“di”);
    }
    }
    调用属性方法:
    1、对象名.属性名
    2、对象名[‘属性名’]
    调用对象的方法:
    对象名.方法名()

  • 利用new Object创建对象
    var obj = new Object();
    obj.uname=“大奎”;
    obj.age=22;
    obj.say = function(){
    函数体;
    }

  • 利用构造函数创建对象(构造函数首字母要大写!)
    function Star(uname,age,sex){
    this.name = uname;
    this.age = age;
    this.sex = sex;
    this.方法 = function(){}
    }
    new Star(“猪咪”,3,‘女’); 返回一个对象

遍历对象:

for(变量 in 对象){}
for(var k in obj){
	k//变量,即属性名
	obj[k]//属性值
}

内置对象

js中的对象分为3钟:自定义对象、内置对象、浏览器对象(js独有)
内置对象:js语言自带的一些对象,这些对象供开发者使用,并提供了一些自带的或是最基本而必要的功能(属性和方法)
常用的内置对象:Math、Date、Array、String

Math

不是构造函数,直接使用它的属性和构造方法
如Math.PI
	Math.max(1,22,34);
	Marh.abs():	取绝对值
	Math.floor():向下取整
	Math.ceil():向上取整
	Math.round():四舍五入 复数,.5往大了取
	Math.random():得到一个[0,1)的浮点数
	得到两个范围之间的随机数:
function getRandom(min,max){
   return Math.floor(.random() * (max - min + 1)) + min;
  }

Date

是一个构造函数,必须使用new来调用日期对象
var date = new Date();
1、如果没有参数,返回系统的当前时间
2、参数常用写法:
	数字型 2019,10,01 或者是“2019-10-1 8:8:8”
	第一种打印出来比实际月份大一
3、日期格式化

日期格式化
获得总的毫秒数(距离1970年1月1号过了多少毫秒数)也称作时间戳

var date = new Date();        
//目前的时间距离1970.1.1总的毫秒数       
var x = date.valueOf();        
var y = date.getTime();        
var date1 = +new Date();
var date2 = Date.now();

倒计时案例

function conuDown(time){            
	var nowTime = +new Date();//当前时间毫秒数            
	var userTime = +new Date(time);//用户输入时间毫秒数   
	var times = (userTime - nowTime)/1000;//差距秒数            
	var d = parseInt(times/60/60/24)//得到剩余天数            
	 d = d < 10? '0'+d : d;            
	 var h = parseInt(times/60/60%24)//得到时            
	 h = h < 10? '0'+h : h;            
	 var m = parseInt(times/60%60)//得到分            
	 m = m < 10? '0'+m : m;            
	 var s = parseInt(times%60)//得到秒            
	 s = s < 10? '0'+s : s;       
	}
	console.log(conuDown('2020-4-17 18:00:00'));

数组对象

var arr = [1,2,3]
var arr = new Array(m); // m为长度
var arr = new Array(1,2,3); // 等价于[1,2,3]
1、检测是否是数组:
var arr = [];        
console.log(arr instanceof Array);//true
Array.isArray(arr)//true
2、添加数组元素
 arr.push(4,'kk');//末尾追加新的元素,返回值为新数组的长度 
 arr.unshift(0,'sss')//在数组最前面添加数组元素,返回新数组的元素
3、删除数组元素
arr.pop();//弹出数组最后一个元素,返回删除的那个元素        
arr.shift();//弹出数组的第一个元素,返回删除的那个元素
4、数组排序
//翻转数组        
arr.reverse();        
//数组排序        
arr.sort(function(a,b){            
	return a-b;//升序的顺序排序||b-a为降序        
});
5、查找索引
//只返回第一个索引,若找不到返回-1        
var x = arr.indexOf(4);        
//从后面开始查找,只返回第一个索引        
var y = arr.lastIndexOf(4);
数组去重案例:
	目标:把旧数组里不重复的元素选取出来放到新数组中。
	核心算法:遍历旧数组,用新数组的元素去查询新数组,若该数组在新数组里没有出现过,则添加否则不添加
function unique(arr) {            
	var newArr = [];            
	for(var i = 0;i < arr.length; i++){
	    if(newArr.indexOf(arr[i] === -1)){
	         newArr.push(arr[i])}            
	 }            
	 return newArr;        
}
6、数组转化为字符串
arr.toString();//用,连接          
arr.join('-');//用()中填写的符号连接

其他函数

基本包装类型

把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
String Number和Boolean

字符串的不可变性:
一个字符串占有自己的空间,给字符串改变值后就重新开辟空间存储。即内容变了但地址不变。

1、字符串查找特定字的位置:

var str='别怕孤单家一直在';          
console.log(str.indexOf('家'));          console.log(str.indexOf('家',3));//从索引号3的位置开始查找
console.log(str.lastIndexOf('一'));//从后开始查找

2、根据位置返回字符

 //1、charAt(index)          
 var str = 'allmygirl'          
 console.log(str.charAt(3));//m          
 //2、charCodeAt(index)返回相应索引号的字符ASCII值,可用来判断用户按下了哪个键          
 console.log(str.charCodeAt(0));          
 //3、str[index] h5新增          
 console.log(str[0]);//a

案例,统计一个字符串中每个字符出现的次数并输出出现次数最多的字符
解决方法:
1、用charAt()遍历字符串
2、把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在就+1
3、遍历对象,得到最大值和该字符

var str='abhcdiagfyreoqncdjafrbyuv';          
var o={};          
for(var i=0;i<str.length;i++){              
	var chars = str.charAt(i);//chars 是字符串的每一个字符    
	if(o[chars]){//o[chars]得到的是属性值           
	    o[chars]++;              
	    }else{                  
	    	o[chars] = 1;              
	    	}         
	  }
	 var max = 0;          
	 var ch = '';          
	 //遍历对象          
	 for(var k in o){            
	 	if(o[k] > max){                
	 		max = o[k];                
	 		ch = k;            
	 		}          
	 	}          
	 	console.log(max);          
	 	console.log(ch);

3、字符串操作方法

 //1、concat('字符串1','字符串2'...)          
 var str = 'KUN';          
 console.log(str.concat('IKUN'));//KUNIKUN          
 //2、substr('截取的起始位置','截取几个字符')          
 console.log(str.substr(1,2));          
 //3、slice(start,end)包括start不包括end          
 //4、subString(start,end)不接受负值,与slice相似
  //5、替换字符 replace('被替换字符','替换的字符') 只会替换第一个字符          str.replace('u','n');            
  //全替换                
  while(str.indexOf('k') !== -1){                    
  	str1 = str1.replace('k','*');                
  }          
  //6、字符转换为数组 split('分隔符') join:把数组转换为字符串          
  var str2 = "k,e,r";          
  var arr = str2.split(',');

简单数据类型与复杂数据类型

简单数据类型又叫做基本数据类型或值类型,复杂类型又叫做引用类型

  • 值类型:在存储变量中存储的是值本身。如:string,number,Boolean,undefined,null(返回的是空的对象object)
  • 引用类型:存储变量时存储的仅仅是地址。通过new关键字创建的对象(系统对象、自定义对象)如:Object,Array,Date

简单数据类型存在栈中,复杂类型在栈中存放地址,内容存在堆中,地址指向堆中的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值