博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中的对象
阅读量:6418 次
发布时间:2019-06-23

本文共 8994 字,大约阅读时间需要 29 分钟。

hot3.png

对象的基本概念、属性和方法

JS对象可以理解为带有属性和方法的特殊数据类型。

类:类是具有相同类型的对象的抽象。一个对象包含的所有数据和过程可以通过类来构造。

继承性:在某种情况下,一个类会有“子类”,子类比原本的类(称为父类)要更加具体化

封装性:类向外部隐藏某一方法的具体执行步骤

多态性:由继承而产生的相关的不同类,其对象对同一消息会做出不同的响应。

创建对象:

1.使用构造函数创建对象

基本结构: var  objectName= new  functionName(args)

objectName表示构造的实例对象

functionName表示一个构造函数

Args表示参数列表

构造函数内this指代objectName实例对象

2.使用对象直接量创建对象(推荐)

属性名与属性值之间通过冒号进行分隔。属性与属性之间通过逗号进行分隔。

对象的属性值可以是任意类型数据,函数、数组、对象、值等等

1. new操作符

var cat = new Object();

cat.name=“sunny”;  //属性

cat.legs=4;

2. 对象字面量表示法(推荐)

var cat={

       name:“Tom”,   //属性

       legs:4

}

操作对象

引用对象

创建对象后,把对象的地址赋值给变量,实现变量对对象的引用

o = {  // 创建对象,并引用该对象给变量o

   x:1,

   y:true

}

o1 = o;   // 复制变量o

alert(delete o);   // 删除变量o,返回值为true,说明删除成功

alert(o1.x);   // 读取对象内数据,显示为1,说明对象依然存在

alert(o.x);   // 使用o读取对象内的数据,提示没有定义对象

复制对象

利用for/in语句遍历对象成员,然后注意赋值给另一个对象

function F(x,y){   // 构造函数F

    this.x = x;   // 本地属性x

    this.y = y;   // 本地属性y

    this.add = function(){

  // 本地方法add()

        return this.x + this.y;

    }

}

F..mul = function(){

  // 原型方法mul()

    return this.x * this.y;

}

var f = new F(2,3)   // 实例化构造函数,并进行初始化

var o = {}   // 定义一个空对象o

for(var i in f){   // 遍历构造函数的实例,把它的所有成员赋值给对象o

    o[i] = f[i];

}

alert(o.x);   // 返回2

alert(o.y);   // 返回3

alert(o.add());  // 返回5

alert(o.mul());  // 返回6

//注意,有一个易混点,var a=function(){} 此时a即代表方法,alert的话显示a的方法体也能表明a本身就是方法,说是一个易混点是因为,这个容易与方法为变量赋值混淆,比如:var a=b();这个就是用b方法为变量a赋值,而a此时代表的是方法b的返回值,而并非是方法b本身了。

删除对象

JavaScript具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存。找出那些不再继续使用的变量,然后释放其占用的内存。

系统分配给浏览器的内存通常小于桌面应用程序,因此需要优化内存管理,让页面获得更好的性能。

对象删除:

var obj = new Object();
obj = null;  //解除引用 ,解除引用之后,js垃圾回收机制自动删除对象。

操作属性             

定义属性

冒号定于对象属性,左侧为属性名右侧为属性值   //注意,是冒号,不是等号。

例如: x:stringtext;

访问属性

通过.访问 x. stringtext;

赋值属性

x. stringtext=1;

删除属性

Delete  x;

 

JavaScript中的常用内置对象

对象是一种数据结构,用于将数据(属性)和功能(方法)组织在一起。

主要分为:

基本包装类型:Boolean、Number、String

引用类型:Array、Date、RegExp、Function等      //有时间仔细研究一下。

单体内置对象:Global、Math

-------------------------------------------------------------------------------------------------------------

为了提高使用基本类型值的便捷性,提供3个基本包装类型:Boolean、Number、String,封装了各自的属性和方法

当读取一个基本类型值时,后台将自动创建一个对应的基本类型的对象

var s1 = “test";

var s2 = s1.substring(2);   //基本类型值不应有方法?

实际上在后台创建了String类型的实例:

var s1 = new String(“test“);       //创建实例

var s2 = s1.substring(2);            //调用方法

var s1 = null;                                //销毁实例

-------------------------------------------------------------------------------------------------------------

Number类型

toString()方法

var num = 10;

alert(num.toString());       //"10"

alert(num.toString(2));      //“1010” 二进制数

alert(num.toString(16));     //“a” 十六进制数

toFixed()方法,按设定的小数位数返回字符串

var num = 10;

alert(num.toFixed(2));       //"10.00"

String类型

字符串长度属性 .length

字符方法 charAt(), charCodeAt()

var stringValue = “hello world”;

alert(stringValue.charAt(1));      //“e”

alert(stringValue.charCodeAt(1));     //“101”

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

//方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。

字符串操作方法

concat()   //拼接字符串

substring   //取子字符串

字符串位置方法

var stringValue = “hello world”;

alert(stringValue. indexOf(“o”));      //4 ,,这个默认是第一个"o"的位置。

alert(stringValue.lastIndexOf(“o”));     //7 ,还是很精细的,这个返回最后一个“o”的位置

删除前后空格的方法   trim()

大小写转换方法  toLowerCase()  toUpperCase()

对象--Array类型

数组,一组值的有序列表

-------------------------------------------------------------------------------------------------------------

特点:

同一数组每个单元可以保存不能类型的值,如{“blue”, 3, true, null}

动态数组,长度可以动态调整

功能强大:提供栈、队列、排序等功能

-------------------------------------------------------------------------------------------------------------

创建方法包括以下三种方式:

         1)new Array();

         2)new Array(size);

         3)new Array(element0, element1, ..., elementn);

参数:

参数 size 是期望的数组元素个数。

参数 element ..., elementn 是参数列表。

返回值:

1)方法返回的数组为空,length 字段为 0。

2)方法返回具有指定个数、元素为 undefined 的数组。

3)方法返回具有指定个数、元素为 指定值的数组。

Array对象中包含的主要方法如下:

方法

描述

concat()

连接两个或更多的数组,并返回结果 //这个经常用到。

join()

把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔 //这个很实用。

pop()

删除并返回数组的最后一个元素      //栈方法

push()

向数组的末尾添加一个或更多元素,并返回新的长度 //绝对最常用,注意不是add()方法,而是push

reverse()

颠倒数组中元素的顺序

shift()

删除并返回数组的第一个元素        //队列方法 ,联系pop();

unshift()

向数组的开头添加一个或更多元素,并返回新的长度  //un

 sort()

对数组的元素进行排序    //l类似于java的一个接口

toString()

把数组转换为字符串,并返回结果    //貌似没什么大用处,数组可以直接alert(),当然也会有好多其他用处

valueOf()

返回数组对象的原始值

 

对象--Date类型

Date 对象用于处理日期和时间,使用自UTC(Coordinated Universal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。Date对象创建方法有以下几种:

var now = new Date();     //获得当前系统日期和时间

var someDate = new Date(Date.parse("May 25,2012"));

var someDate = new Date("May 25,2012"); //与上相同

var someDate = new Date(Date.UTC(2010,0)); //GMT时间2010年1月1日凌晨0时

var someDate = new Date(2010,0); //与上相同

var someDate = new Date(Date.UTC(2010,4,5,17,55,55)); //GMT时间2010年5月6日下午5:55:55,月和时以0为基数,0表示一月

var someDate = new Date(2010,4,5,17,55,55); //与上相同

Date对象常用的方法和说明如下:

方法

描述

getDate()

从 Date 对象返回日期 (1 ~ 31)  //日

getDay()

从 Date 对象返回星期几(0 ~ 6)  //星期几

getTime()

返回 1970 年 1 月 1 日至今的毫秒数  //常用来测试程序

parse()

返回1970年1月1日午夜到指定日期(字符串)的毫秒数

setDate()

设置 Date 对象中月的某一天 (1 ~ 31)

setTime()

以毫秒设置 Date 对象

toString()

把 Date 对象转换为字符串

toTimeString()

把 Date 对象的时间部分转换为字符串

toDateString()

把 Date 对象的日期部分转换为字符串

===============================================================

有一个问题应当注意:

var a=new Date().parse();   //这个是允许的,因为parse方法是Date类的静态方法,允许点点直接点调用。但是其他的非静态方法则不行。

var a=new Date().getDate();

var b=a.getTime();    //非静态方法应当如此定义(getTime是静态方法,只是举个例子)。4

===============================================================

对象--RegExp类型

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具,被用来检索、替换那些符合某个模式的文本。

语法:

          new RegExp(pattern, attributes);

参数:

          pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式

attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。

方括号用于查找某个范围内的字符:

表达式

描述

[abc]

查找方括号之间的任何字符

[^abc]

查找任何不在方括号之间的字符

[0-9]

查找任何从 0 至 9 的数字

[a-z]

查找任何从小写 a 到小写 z 的字符

[A-Z]

查找任何从大写 A 到大写 Z 的字符

[A-z]

查找任何从大写 A 到小写 z 的字符

[adgk]

查找给定集合内的任何字符

[^adgk]

查找给定集合外的任何字符

(red|blue|green)

查找任何指定的选项

 

元字符(Metacharacter)是拥有特殊含义的字符:

元字符

描述

\d

查找数字

\D

查找非数字字符

\s

查找空白字符

\S

查找非空白字符

\n

查找换行符

\f

查找换页符

\r

查找回车符

\t

查找制表符

 

RegExp对象属性:

属性

描述

global

RegExp 对象是否具有标志 g

ignoreCase

RegExp 对象是否具有标志 i

lastIndex

一个整数,标示开始下一次匹配的字符位置

multiline

RegExp 对象是否具有标志 m

source

正则表达式的源文本

 

RegExp对象方法:

方法

描述

exec

检索字符串中指定的值。返回找到的值,并确定其位置

test

检索字符串中指定的值。返回 true 或 false

 

对象--Function类型lJS 中Function类型实际上是一种对象Object。每一个函数实际上都是Function类型的一个实例,每一个函数都有一些默认的属性和方法。

function sum(num1, num2)

{ return num1 + num2;}

相当于

var sum = function(num1, num2)

{ return num1 + num2;};

函数名实际上是一个指向函数对象的指针变量

function sum(num1, num2)

{ return num1 + num2;}

alert(sum(10,10));         //20

var anotherSum = sum;

alert(anotherSum(10,10));  //20

sum = null;

alert(anotherSum(10,10));  //20

函数名是指针,JS函数没有重载。

作为值的函数,可以像传递参数一样将函数传递给另一个函数

function callSomeFunction(someFunction, someArgument){

            return someFunction(someArgument);        }

 

function add10(num){   return num + 10;        }

 

var result1 = callSomeFunction(add10, 10);

        alert(result1);   //20

注意不是 callSomeFunction(add10(), 10);   //add10()是执行函数后的结果,这个地方很容易出错

函数内部属性

arguments,是一个数组对象,包含传入函数的所有参数,如可以通过arguments[0]取第一个参数

this,指向函数执行的环境对象

        window.color = "red";

        var o = { color: "blue" };

        function sayColor(){

            alert(this.color);

        }

        sayColor();     //red

        o.sayColor = sayColor;  //这点要注意,Js是基于对象的,用于一个对象的方法通常对其他对象不再适用,但是可以在想应用的对象上在定义一个函数使其等于目标函数。

        o.sayColor();   //blue

内置对象:ECMAScript实现提供的、不依赖于宿主环境的对象,在ECMAScript程序执行之前就已经存在。

Global对象:所有在全局作用域中定义的属性和函数,都属于Global对象,比如isNaN()、parseInt()、parseFloat()、encodeURI()、eval()方法。

Math对象:用于执行数学任务

属性:Math.PI、SQRT2(2 的平方根)等

方法:abs(x)、sin(x)、max(x, y)、round(x)、ceil(x)等。

浏览器对象

BOM浏览器对象模型(Browser Object Model)

主要用于管理浏览器窗口,提供独立于内容而与浏览器窗口进行交互的对象。这些功能与任何网页内容无关。

可以对浏览器窗口进行访问和操作,如可以弹出新的窗口,改变状态栏中的文本等

============================================================

Window:客户端JS中的顶层对象。每当body或frameset标签出现时,window对象就会被自动创建。

Navigator:包含客户端有关浏览器的信息。

Screen:包含客户端显示屏的信息。

History:包含浏览器窗口访问过的URL信息。

Location:包含当前网页文档的URL信息。

Document:包含整个HTML文档,可被用来访问文档内容,及其所有页面元素。

============================================================

window对象

Window对象时BOM的核心,代表浏览器窗口的一个实例。在浏览器中,window对象既是JavaScript访问浏览器窗口的接口,也是JavaScript的全局对象,因此在全局作用域中声明的所有变量和函数也是window对象的属性和方法

表示整个浏览器窗口,不包含内容

frames集合--可以用window.frames[0]或者window[“frameName”]来引用框架

框架中包含框架,父框架parent对象,self对象

window对象

窗口操作:调整浏览器窗口的大小和位置

window.resizeTo(150,300);

打开新窗口

window.open(“http://www.163.com”,”topFrame”,”属性字符串height=300,width=300,resizable=yes”);

弹出系统对话框 alert()  、confirm()等

历史history

window.history.go(-1);   //后退一页
window.history.go(1);   //前进一页
history.length  //历史页面数

document对象

浏览器当前文档对象,既属于BOM也属于DOM (Document Object Model,文档对象模型)

属性

            bgColor      //背景颜色
            fgColor      //文本颜色
            linkColor   //链接的颜色
            title            //<title/>中的文本
            URL          //当前页面的url

集合

            anchors    //<a href=“……” >
            images      //页面中所有图片的集合
            forms      //所有表单的集合
            links        //所有外部文件连接的集合

   可以使用document.images[0] 或者 document.images[“imagename”]访问图片

在调用的位置写入字符串

write(“This is a test”);
writeln(“This is a test”);   //末尾加上换行符\n

open()打开文档进行编写

close()关闭open()打开的文档,让浏览器显示页面

必须在完全载入页面前调用write()。如果在页面载入后调用,将抹去页面的内容,显示指定的内容。

location对象

地址对象,就是将URL封装成了一个对象

属性

      host  //返回服务器的名字,如www.qq.com
      href  //当前浏览器的完整url
   pathname      //url主机名后的部分,如www.qq.com/news/index.aspx  将放回/news/index.aspx
      port            //端口
      protocol      //url中使用的协议,http://或者ftp://
      search         //将返回?后(包括?)的内容

lnavigator对象

浏览器信息对象,提供浏览器的信息

大多数浏览器支持的属性

appName    //官方浏览器名
appVersion    //浏览器版本
platform      //运行浏览器的平台

screen对象

height / width屏幕的高度和宽度,像素

colorDepth,调色板的颜色深度

转载于:https://my.oschina.net/u/3758825/blog/1604837

你可能感兴趣的文章
微信原图泄露的只能是 Exif ,你的隐私不在这!!!
查看>>
微信小程序教学第三章(含视频):小程序中级实战教程:列表篇-页面逻辑处理...
查看>>
页面间通信与数据共享解决方案简析
查看>>
Swift 中 Substrings 与 String
查看>>
作为一个开源软件的作者是一种什么样的感受?
查看>>
移动端适配知识你到底知多少
查看>>
Java基础笔记16
查看>>
TiDB 在 G7 的实践和未来
查看>>
重新认识javascript对象(三)——原型及原型链
查看>>
小学生学“数学”
查看>>
【Vue】组件使用之参数校验
查看>>
FastDFS蛋疼的集群和负载均衡(十七)之解决LVS+Keepalived遇到的问题
查看>>
深入剖析Redis系列(二) - Redis哨兵模式与高可用集群
查看>>
上班第一天的BUG居然是chrome翻译功能导致的
查看>>
Android 用于校验集合参数的小封装
查看>>
iOS混合开发库(GICXMLLayout)七、JavaScript篇
查看>>
instrument 调试 无法指出问题代码 解决
查看>>
理解缓存
查看>>
im也去中心化?Startalk(星语)的去中心化设计之路
查看>>
SpringBoot 实战 (六) | 用 JdbcTemplates 访问 Mysql
查看>>