JavaScript基础篇下(对象(创建,遍历,内置),基本包装类型,undefined使用场景)

对象

一.对象的四种创建方式

1.系统object创建

var person = new Object();
  person.name = 'lisi';
  person.age = 35;
  person.job = 'actor';
  person.sayHi = function(){
  console.log('Hello,everyBody');
}
/调用方式
console.log(person.name,person.age,person.job);
  person.sayHi();

2.字面量冒号方式

var person = {
  name: 'zs',
  age: 18,
  sex: true,
  sayHi: function () {
  console.log(this.name);
  }
};
///调用方式
console.log(person.name,person.age,person.sex);
person.sayHi();

3.自定义构造方式
自定义构造函数特点:首字母大写,有参数,用this指向属性,最后new一个对象调用

function Person(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayHi = function(){
  	console.log('Hello,everyBody');
  }
}
//调用方式
var p1 = new Person('张三', 22, 'actor');//但是可以调用
console.log(p1);
p1.sayHi();

4.工厂模式创建对象
工厂模式创建对象的特点:
有参数,先new一个对象,有return值,有参数

function createPerson(name, age, job) {
  var person = new Object();
  person.name = name;
  person.age = age;
  person.job = job;
  person.sayHi = function(){
    console.log('Hello,everyBody');
  }
  return person;
}
var p1 = createPerson('张三', 22, 'actor');
p1.sayHi();

new关键字在执行过程中的四个步骤:

1.开辟空间,存储创建的新的对象
2.把this指向了这个新的对象
3.设置属性和方法的值
4.返回当前的新的对象

this关键字

1.函数在定义的时候this是不确定的,只有在调用的时候才可以确定
2.在普通函数中使用,内部this指向全局window
3.函数作为一个对象的方法,被该对象所调用,那么this指向的是该对象
4.构造函数中的this其实是一个隐式对象,类似一个初始化的模型,所有的方法和属性都挂载到这个隐式对象身上,后续通过new关键字来调用,从而实现实例化

二,函数中使用对象的三种方式

1.对象在函数里

function getDate() {

    var dt=new Date();  

    var year = dt.getFullYear();

    return year;

console.log(getDate());

2.对象在函数外

function getDate() {   

 var year = dt.getFullYear();    

return year + '年' + month + '月' + day + '日' + hour + ":" + second;}

var dt=new Date();

console.log(getDate());

3.对象在函数中当参数

 function getDate(dt) {   /// /

var year = dt.getFullYear();   

 return year + '年' + month + '月' + day + '日' + hour + ":" + second;}

console.log(getDate(new Date()));///
三.遍历对象

通过for…in语法可以遍历一个对象key存储的变量名
obj[key]存储的是赋给变量的值

var obj = {};
for (var i = 0; i < 10; i++) {
  obj[i] = i * 2;
}
for(var key in obj) {
  console.log(key + "==" + obj[key]);
}

删除对象的属性

function fun() { 
  this.name = 'mm';
}
var obj = new fun(); 
console.log(obj.name); 
//直接用delete删除对象的属性值
delete obj.name;
console.log(obj.name); // undefined
四.内置对象

1.Math
Math.PI
(1)Math.random 生成随机数
如果直接输出Math.random(),出现的是0-1之间的小数
如果想要让它产生多少范围之间的整数,我们则用
parseInt(Math.random()*5)会产生0---4这些整数 parseInt((Math.random()*5)+1)会产生1----5这些整数
(2)Math.floor向下取整

  •  eg:-2.3取整为-3
    

(3)Math.ceil 向上取整
取得比当前数值大的整数 如果是是负数

  •  eg: -1.6取整为-1
    

(4)Math.round 取整 四舍五入
如果是负数,取整,但是是五舍六入
(5)Math.abs 绝对值
(6)Math.max/Math.min 最大值和最小值
(7)Math.sqrt 平方根
2.Date
(1)Date创建方式

  •  获取当前时间,UTC世界时间,距1970年1月1日(世界标准时间)起的毫秒数	
     1.var date = new Date();  //获得计算机的当前时间
     console.log(date);
     2.通过设置参数,指定date的时间
     var date = newDate(2018,10,21,11,11,10);
     consol.log(date);
     3.字符串类型参数传入方式---常用
     var date = new date('2015-4-6 12:26:16');
     console.log(date);
    

(2)Date中获取具体时间的方法系列

  •  1.getFullYear()  //返回4位的年份 比如2012
     2.getMonth()  //返回月份,从0开始
     3.getDate()    //返回当前月的第几天
     4.getDay()    //返回星期几  0---周日
     5.getHours()  //返回.-23之间的小时数
     6.getMinutes()  //返回0-59分钟数
     7.getSeconds()  //返回0-59秒数
     8.getMilliseconds()  //返回0-999毫秒数 
     9.getTime()   //返回毫秒数和valueOf()结果一样,valueOf()内部调用的getTime()
    

补充:valueOf()方法
valueOf()方法用于返回给定参数的原生Number对象值,参数可以是原生数据类型,String等
该方法是静态方法,可以接收两个参数,一个是字符串,一个是基数
语法:
该方法有以下几种语法格式:

  •  static Integer valueOf(int i)
     static Integer valueOf(String s)
     static Integer valueOf(String s, int radix)
    

参数:

  • i – Integer 对象的整数。
    s – Integer 对象的字符串。
    radix --在解析字符串 s 时使用的基数,用于指定使用的进制数。

返回值:

  •  Integer valueOf(int i):返回一个表示指定的 int 值的 Integer 实例。
     Integer valueOf(String s):返回保存指定的 String 的值的 Integer 对象。
     Integer valueOf(String s, int radix): 返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。
    

实例:

public class Test{ 
public static void main(String args[]){
        Integer x =Integer.valueOf(9);
        Double c = Double.valueOf(5);
        Float a = Float.valueOf("80");               

        Integer b = Integer.valueOf("444",16);   // 使用 16 进制

        System.out.println(x); 
        System.out.println(c);
        System.out.println(a);
        System.out.println(b);
    }
}
//输出结果:
9
5.0
80.0
1092

(3)将日期转换为毫秒形式

var date = new Date();
console.log(date.getTime())
console.log(date.valueOf())	
console.log(Date.now());
console.log(Date.parse('2015-1-1'));
var now = + new Date();	+号是把字符串转换为数值类型	

3.String
(1)字符串的特性
a.不可变性:字符串的值是不能改变的(原字符串不可变,但能重新赋值)
b.字符串是可以看成一个数组的,称为字符数组,可以遍历的
(2)字符串对象的常用属性和方法

  •  String,length   获得字符串长度
     charAt(0-length-1)/str[0]   获取指定位置处字符,超出索引,返回值为空
     concat()   拼接字符串,等效于+,+更常用
     indexOf()   返回指定内容在原字符串中的位置,有两个参数,第一个参数是要找的字符,第二个参数是开始找的位置
     lastindexOf()   从后往前找
     replace()   替换,两个参数,第一个参数:原来的字符;第二个参数:要换成的字符串替换.注意:只能替换从左往右找到的第一个满足的字符串
     slice()   拷贝字符串,两个参数:第一个参数,开始位置;第二个参数:结束位置(不包含)
     	[补充:substring 与sclice相同,如果只有一个参数的话,就是从该参数指定位置拷贝到最后 ]
     substring()   截取字符串,两个参数,第一个参数:开始的索引位置;第二个参数:截取的个数
     split()   切割字符串,两个参数,第一个参数:要切割的字符串;第二个参数:切割后剩下的个数	返回值:返回分割后的多个部分组成的数组
     to(Locale)LowerCase()/toLowerCase()  转成小写
     to(Locale)UpperCase()/toUpperCase()  转成大写
     trim()  只能去除字符串两端的空白,字符串中间的空格去不掉
    

4.Array
1.创建数组对象的两种方式:

  • (1)使用构造函数创建数组对象
     //创建一个空数组
     var arr = new Array();
     //创建一个数据,里面放3个字符串
     var arr = new Array('zs','zsc','sc');
     //创建一个数组,里面放4个数字
     var arr = new Array(1,2.3,4);
    
  • (2)使用字面量创建数组对象
    var arr = [1,2,3];
    //获取数组中元素的个数
    console.log(arr.length);
    2.检测一个数组是否是数组
  •  (1)instanceof
    
  •  (2)Array.isArray()
     eg:var obj=[];
     console.log(Array.isArray(obj));//true
    

3.数组的四个基本操作方法:

  •  push() 	从数组最后面加元素
     pop()		从数组最后面删元素
     shift() 	从数组前面删元素
     unshift() 	从数组前面加元素
    

4.数组的位置方法:

  •   indexOf()	查数组中的某个元素的索引位置,两个参数,第一个参数:要检索的元素值;第二个参数:默认值为0,表示检索的起始位置索引值;返回值:返回从左往右找到的第一个元素的索引值,如果没有查找到对应的元素,返回值为 -1
     			在ie9以下不支持
      lastIndexOf()	从后面开始找,检索顺序与indexOf相反
     			在ie9以下不支持
    

    排序方法:

  •  reverse()	翻转数组,返回值:返回修改后的原数组(与原数组是同一个数组)
     sort()	对数组进行排序时,如果数组大于9之后,也是按照打一个字符的顺序排序
     		sort()里面也可以是函数,如果是函数,意思是按照该函数规定的顺序进行排序
     		参数:升序: function(a,b) {return a-b;}  //从小到大
     			 降序: function(a,b){return b-a;}	//从大到小
    

    转换方法:

  •  toString() 将一个数组转换为字符串类型,返回字符串,形式为将每个元素按照逗号,连接。
     join()	可以使用指定的连接符将每个数组元素连接,如果不传参数,默认用逗号,join传空会直接将每个元素进行连接.转成字符串 
    

4.清空数组的三种方法

  • (1) arr = []; //推荐
    (2) arr.length = 0;
    (3) arr.splice(0, arr.length);
五.基本包装类型对象

首先注意一个问题:字符串这种基本数据类型为什么会具有属性(或方法呢)
原因:字符串就是一种基本数据类型值,字符串非常常用,在js开发过程中,会在使用基本数据类型的属性或方法时给我们自动创建一个对象,这种对象称为基本包装类型对象.会使用这个对象的属性和方法,等使用完毕,这个对象被移除.
基本包装对象定义:用于对基本数据类型值进行操作的对象
js执行过程:

var str = 'abcdefg';
var temp = new String(str);
//1 js自动创建了一个同于操作字符串类型值的对象
console.log(temp.length); 
//2 根据我们设置的功能,访问这个对象的对应功能
temp = null;
//3 将这个对象清除

这种对象是js操作时使用的,不用自己书写,自己使用会产生歧义

六.undefined使用场景

1.变量声明未赋值,默认为undefined

    var a;
    console.log(a);

2.数组中 某一项没有值 值是undefined

 var arr = [1, 2, 3];
    console.log(arr[10]);

3.函数的形参没有接收到对应实参,默认为undefined

  function fn(a, b) {
        console.log(b);
    }
    fn(1);

4.函数没有返回值 相当于返回了undefined

   console.log(fn(1, 2));

5.对象没有这个属性 非要获取这个属性的值 这个属性的值也是undefined

  var obj = {
        name: "zs",
        age: 18
    };
    console.log(obj.sex);

//undefined都是解析器给的默认值
//null一般都是程序员主动赋予的值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值