JavaScript对象内置对象,值类型和引用类型讲解

目录
  • 对象
  • 对象的定义
  • 遍历对象的成员
  • JS内置对象
  • Math对象
  • Date对象
  • 数组对象
  • String对象
  • 值类型和引用类型

对象

JS中的对象是属性行为结合体,其中属性是对象的静态特征,行为又称方法,是对象的动态特征。

JavaScript中的对象主要分为三大类:

  • 内置对象

由ES标准中定义的对象 在任何的ES的实现中都可以使用,比如Math String Number Boolean Function Object

  • 宿主对象

由JS的运行环境提供的对象,目前来讲主要是浏览器提供的对象,比如BOM DOM

  • 自定义对象

由开发人员自己创建的对象

对象的定义

定义非空对象

// 非空对象:
var 对象名 = {
	属性名: 值,
	...
	方法名: function([参数]){
		方法体语句;
	}
	...
}
var p1 = {
	color: '黑色',//给对象添加属性
	weight: '188g',//属性之间用逗号隔开
	screenSize: 6.5,
	call: function(name){//给对象添加方法
		console.log("打出电话:"+name);
	},
	sendMassage: function(msg){
		console.log("发出的信息是:"+msg);
	},
	playVideo: function(){
		console.log("播放视频");
	},
	playMusic: function(){
		console.log("播放音乐");
	}
}
console.log("手机颜色:"+p1['color']);//也可以使用 对象['属性']来输出属性值
console.log("手机重量:"+p1.weight);
console.log("屏幕尺寸:"+p1.screenSize);
p1.call("张三");//调用对象的发方法
p1["sendMassage"]("helo");
p1.playVideo();
p1.playMusic();
console.log(p1);

使用new Object()创建对象

var p = new Object(); // 创建一个空对象p
p2.name = '刘备';
p2.sex = '男';
p2.age = 32;
p2.sayHello = function(){
	console.log('Hello');
}
p2.sayHello();//调用对象的方法

可以使用构造函数来创建对象:
语法: new 构造函数名( )

function Student(name,sex,age){
	this.name = name;//这里的this指向的是构造函数新创建的对象
	this.sex = sex;
	this.age = age;
	this.show = function(){
		console.log("姓名:"+this.name)
		console.log("姓别:"+this.sex)
		console.log("年龄:"+this.age)
	}
}
var s1 = new Student('乔峰','男',28);//s1为构造函数创建的新对象 即实例
s1.show();
var s2 = new Student('段誉','男',23);
s2.show();

注意:"构造函数"可以有参数,也可以没有参数,如果没有参数小括号可以省略

遍历对象的成员

遍历对象的属性和方法:使用for…in循环

for(var 变量名 in 对象名){
	循环语句
}
function Student(name,sex,age){
	this.name = name;
	this.sex = sex;
	this.age = age;
	this.show = function(){
		console.log("姓名:"+this.name)
		console.log("姓别:"+this.sex)
		console.log("年龄:"+this.age)
	}
}
// s2是要遍历的对象
var s2 = new Student('段誉','男',23);
for(var k in s2){
	console.log(k);//依次输出 name sex age show()
	console.log(s2[k]);//依次输出 段誉 男 23
}

in运算符
判断成员(属性)在对象中是否存在,存在返回true;不存在返回false。

JS内置对象

JavaScript提供了很多常用的内置对象,包括数学对象Math、日期对象Date、数组对象Array以及字符串对象String等。

Math对象

Math对象:用来对数字进行与数学相关的运算,不需要实例化对象,可以直接使用其静态属性和静态方法.

Math对象:不需要实例化
Math.PI:算数常量PI
Math.abs(x):返回x的绝对值
Math.max(args...):返回最大数
Math.min(args...):返回最小数
Math.pow(x,y):返回x的y次方
Math.sqrt(x):返回x的算术平方根
Math.random():返回0.0到1.0之间的随机数
Math.round(x):返回最接近x的整数
Math.floor(x):返回一个小于等于x 并且与它最接近的整数
Math.ceil(x):返回一个大于等于x 并且与它最接近的整数

Date对象

Date对象:需要使用new Date()实例化对象才能使用,创建一个对象 Date()是一个构造函数,可以给该构造函数传递参数生成一个日期对象。


// 1.创建一个Date对象 没有参数
var date1 = new Date();
console.log(date1);
// 2.传入年 月 日 时 分 秒 创建一个指定日期时间的Date对象
// 月份是 0-11
var date2 = new Date(2021,4,22,10,17,55);
console.log(date2);
// 3.传入一个日期和时间字符串创建一个Date对象
var date3 = new Date("2021-5-22 18:19:25");
console.log(date3);
console.log(date3.getMonth())//4
console.log(date3.getTime())//表示Date对象距离1970年1月1日午夜之间的毫秒数
console.log(date1.toLocaleDateString())//2021/6/14
console.log(date1.toLocaleString())//2021/6/14 下午11:17:36
console.log(date1.getFullYear())//2021

数组对象

数组:是一些类型相同的数据的集合,它和普通的对象功能类似,也是用来存储一些值,数组是使用数字来作为索引操作内部的元素。
数组的创建

  • 使用字面量

    var arr=[]//创建一个空数组

  • 使用new Array创建

    var arr = new Array();//定义一个空数组

判断一个对象是不是数组的两种方法:

  • isArray(对象名)
  • instanceof: 对象名 instanceof Array

    var arr = [];
    var obj = {};
    console.log(Array.isArray(arr));//true
    console.log(Array.isArray(obj));//false
    console.log(arr instanceof Array);//trrue

关于数组的其他方法之前的文章要有详细介绍,这里不多做解释。

String对象

String对象:字符串对象,必须使用new String()来创建

字符串常用方法

- charAt(n) 返回n位置上的字符串
- concat(s1,s2,...) 连接多个字符串
- charCodeAt(n) 返回n位置上的ASCII码
- split('分隔符') 将字符串按给定的分隔符 转换成字符串数组
- substr(start,length) 从start开始提取length个字符构成一个新串
- substring(from,to) 提取from和to之间的字符串构成一个新串
- toLowerCase() 将串中的大写字符转换成小写 不影响原字符串 返回一个新字符串
- toUpperCase() 将串中的所有小写转换成大写 不影响原字符串 返回一个新字符串
- replace(str1,str2) 使用str2替换字符串中的str1 返回替换结果 不影响原字符串

字符串对象练习

// 输入一个由字母组成的字符串,统计串中每个字母出现的次数
var str = 'abBSdXbdea';
var lower = new Array(26);// 存放26个小写字母各自出现的次数
var upper = new Array(26);// 存放26个大写字母各自出现的次数
// 初始化两个数组
for(var i=0;i<lower.length;i++){
    lower[i] = 0
    upper[i] = 0
}
for(var k=0;k<str.length;k++){
    if(str.charAt(k)>='a' && str.charAt(k)<='z'){
        lower[str.charCodeAt(k)-97]++
    }else if(str.charAt(k)>='A' && str.charAt(k)<='Z'){
        upper[str.charCodeAt(k)-65]++
    }
}
console.log(lower);
console.log(upper);
/* 输入一个十进制整数和一个数制(2、8、16)将该十进制整数转换成
        对应的数值格式输出
            取余法:
               m=15 k=8
               m%k 将余数存放在数组中
        */
        var m = parseInt(prompt('请输入一个整数:'));
        var k = parseInt(prompt('请输入一个数制(2~16)'));
        var result = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
        var arr = new Array();//存放数制转换的结果
        var i = 0;
        while(m!=0){//对m进行数制转换 将余数放在arr数组里
            arr[i] = m%k;
            m = parseInt(m/k);
            i++;
        }
        var str = '';
        if(k==8){
            str = '0';
        }else if(k==16){
            str = '0x';
        }
        for(var i=arr.length-1;i>=0;i--){
            str += result[arr[i]];
        }
        console.log('转换的结果为:'+str);

值类型和引用类型

值类型: 简单的数据类型(字符串,数值型,布尔型,undefined,null)
引用类型: 复杂数据类型(对象) 变量中保存的是引用的地址

注意: 引用类型的特点是,变量中保存的仅仅是一个引用的地址,当对变量进行赋值时,并不是将对象复制了一份,而是将两个变量指向了同一个对象的引用。

下面对内存中的栈和堆进行分析
栈(stack):会自动分配内存空间,会自动释放,简单数据类型存放到栈里面。
堆(heap):动态分配的内存,大小不定也不会自动释放,复杂数据类型存放到堆里面。

由此可见存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置,通过这个指针来寻找堆中存储的对象的属性和值,并且每个空间大小不一样,要根据情况开进行特定的分配。

到此这篇关于JavaScript对象,内置对象,值类型和引用类型讲解的文章就介绍到这了,更多相关JavaScript基本对象讲解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JavaScript封闭函数及常用内置对象示例

    本文实例讲述了JavaScript封闭函数及常用内置对象.分享给大家供大家参考,具体如下: 封闭函数 在封闭函数内部定义的函数与外部函数尽管同名也没有关系,同理,定义的变量也可以同名. 封闭函数的写法,一是加括号,一是加感叹号. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>封闭函数</title> &

  • jsp的九大内置对象深入讲解

    jsp中的内置对象,是指 Tomcat在翻译jsp页面成为 Servlet源代码后,内部提供的九大对象,叫内置对象,内置的意思就是本身就有,我们可以直接用. 特别request对象,可以帮助我们很便捷的处理servlet请求转发. 四个域对象 request是一次请求内有效,比如我写一个请求转发的语句,转发跳到另一个界面后,该域还可以访问,但是再请求一次就不能访问该域了. session重启浏览器后不能访问,可以理解为该域保存在浏览器中. application可以认为是保存在本地web工程中,

  • 详解JavaScript的内置对象

    什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法:能够在对象上执行的动作.例如,表单的"提交"(Submit),时间的"获取"(getYear)等: JavaScript 提供多个内建对象,比如 String.Date.Array 等等,使用对象前先定义,如下使用数组对象: var objectName =new Ar

  • JavaScript常用内置对象用法分析

    本文实例讲述了JavaScript常用内置对象用法.分享给大家供大家参考,具体如下: 博主最近半个月没有更新博客,主要是每天都在学车中,学车的过程虽然挺折腾的,但是人吗总得学会适应,在百忙之中给大家分享一篇关于JavaScript的内置对象,不清楚的小伙伴可以进来看看. (1)String对象 当使用到字符串的属性或方法时,系统会把字符串包装成一个对象 属性 length:获取字符串的长度 方法 concat(str1,str2):连接字符串 indexOf(str):查找第一次出现的子字符串的

  • jsp内置对象

    JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1.request对象 request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据.(包括头信息.系统信息.请求方式以及请求参数等). request对 象的作用域为一次请求. String s = request.getParameter("xxxx");//接

  • JavaScript内置对象之Array的使用小结

    数组的创建方式: 1.字面量: 放置一个数值时,就是一个数据. var arr = [6]; 2.构造函数: 放置一个数据时,表示长度或数据的个数,空表示undefined. var arr = new Array(6); 建议:Array作为构造函数,行为很不一致.因此,不建议使用它生成新数组,直接使用数组字面量是更好的做法. 数组的操作: 1.push(); 用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度. 注意,该方法会改变原数组 var arr = [1,2,3]; c

  • JS内置对象和Math对象知识点详解

    Math对象 <script> // Math数学对象 不是一个构造函数 ,所以我们不需要new 来调用 而是直接使用里面的属性和方法即可 console.log(Math.PI); // 一个属性 圆周率 console.log(Math.max(1, 99, 3)); // 99 console.log(Math.max(-1, -10)); // -1 console.log(Math.max(1, 99, 'pink老师')); // NaN console.log(Math.max(

  • javascript标准库(js的标准内置对象)总结

    值属性 这部分属性只是简单的值,它们没有自己的属性和方法. Infinity 全局属性 Infinity 是一个数值,表示无穷大. NaN 全局属性 NaN 的值表示不是一个数字(Not-A-Number). undefined 全局属性undefined表示原始值undefined.它是一个JavaScript的 原始数据类型 . null 值 null 特指对象的值未设置.它是 JavaScript 基本类型 之一. 函数属性 全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将

  • Javascript 类型转换、封闭函数及常见内置对象操作示例

    本文实例讲述了Javascript 类型转换.封闭函数及常见内置对象.分享给大家供大家参考,具体如下: Javascript组成 1.ECMAscript javascript的语法(变量.函数.循环语句等语法) 2.DOM 文档对象模型 操作html和css的方法 3.BOM 浏览器对象模型 操作浏览器的一些方法 类型转换 1.直接转换 parseInt() 与 parseFloat() alert('12'+7); //弹出127 alert( parseInt('12') + 7 ); /

  • 详解JSP 内置对象request常见用法

    request 对象是 HttpServletRequestWrapper 类的实例.它的继承体系如下: _request 对象继承层次结构图.png ServletRequest 接口的唯一子接口是 HttpServletRequest ,HttpServletRequest 接口的唯一实现类 HttpServletRequestWrapper ,单从 request 对象一脉单传的类继承体系可以看出,javaweb 标准类库只支持了 http 协议. Servlet/JSP 中大量使用了接口

  • Javascript基础知识中关于内置对象的知识

    目录 1.内置对象介绍 1.1 Math对象 1.2 Math中的方法 1.3 Date对象 2.Date中的方法 3.经典案例:倒计时效果: 4.Array数组对象 4.1 数组的创建 4.2 数组中的常用方法 5.字符串String 1.内置对象介绍 JavaScript组成: ECMAScript | DOM | BOM ECMAScript: 变量 , 函数, 数据类型 ,流程控制,内置对象 js中的对象: 自定义对象 , 内置对象 , 浏览器对象(不属于ECMAScript) 1.1

  • javascript 内置对象及常见API详细介绍

    一. 类与对象 在 JavaScript世界里,关于面向对象第一个要澄清的概念就是类.对象都是由类来定义的,通过类来创建对象就是我们所熟悉的实例化.然而,在 JavaScript中别没有真正的类,对象的定义就是对象自身.而 ECMA-262 干脆把这种妥协的方式称作为对象的调和剂.为了方便理解,我通常把这个发挥类的作用的调和剂称为类. Javascript内置对象学习 全局属性 Infinity 表示正无穷大的数值 NaN 非数字值 undefined 未定义的值 decodeURI() 对en

随机推荐