对象(引用类型的值)是引用类型的一个实例,新对象是使用new操作符后跟一个构造函数来创建的。构造函数本身就是一个函数,该函数用于创建新对象。ECMAScript提供了很多原生引用类型(Object,Array,Date,RegExp,Funcion…)。

一、Object类型

1、  创建方式

①   、使用new操作符后跟Object构造函数

Var person=new Object();

Person.name=’xxxx’;

Person.age=10;

②   对象字面量标识法

Var person={

Name:’xxxx’,

Age:10

}

属性默认都是字符串,打不打引号都可以。

2、  使用方式(访问对象的属性)

①   、点表示法

Person.name;person.age;

②   、中括号表示法

Person[‘name’];person[‘age’]

方括号中的字符串可以通过变量传入

二、Array类型

ECMAScript中的数组相对于其他语言来讲比较特殊,是个功能比较多的数据类型。主要区别在于:每一项都可以保存任何类型的数据,数组的大小是可以动态调整的。

1、  创建方式

①   、使用Array的构造函数

Var colors = new Array();

Var colors = new Array(“aa”,”bb”,”cc”);

②   、使用数组字面量表示法

Var colors = [“aa”,”bb”,”cc”];

2、  Array用作栈(FILO)

Array类型自带了两个方法push(),pop(),如果要实现一个栈的数据结构可以直接用Array类型定义。

3、  Array用作队列(FIFO)

Array类型的shift()方法可以取得数组中第一个元素并移除该元素,结合push()方法,就可以将一个数组当做队列来使用

4、  一些常用方法(混个眼熟,用到时再去查)

①   、重排序:Reverse()、sort()

②   、连接Concat();

③   创建新数组slice();

④   插入删除替换splice();

⑤   查找索引indexOf()、lastIndexOf();

⑥   迭代方法:every()、filter()、forEach()、map()、some();

⑦   缩小方法:reduce()、reduceRight()

三、Date类型

四、RegExp类型

以上两种类型,低端应用中比较少见,尤其是正则表达式,博大精深不是一句两句能明白的,用到再查API吧。

五、Function类型

什么,函数竟然是一种数据类型,没错,ECMAScript中函数实际上是对象,函数与其他引用类型一样可以具有属性和方法。每个函数都是Function类型的实例,函数名实际上是一个指向函数对象的指针。这意味着js中定义函数时的函数名单从定义函数的角度讲意义不大,因为函数执行的逻辑跟函数名完全没关系。函数名既然是一个变量那么也就意味着它可以作为参数传递给另外的函数,也可以作为函数的返回值返回。

ECMAScript中函数没有定义返回值类型,因为返回值可以是任何类型,这是跟变量的定义相符合的,因为一个变量可以表示任何类型的数据。

Ex1:

Function aa(){};

Var bb=function(){};//与上面效果完全相同。

Ex2:

function aa () {

alert('aa');

};

var aa = function() {

alert('bb');

}

调用aa()时将会输出bb

Ex3:

以下两个button单击后都输出了2,童鞋们,亮瞎眼了吗?

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script type="text/javascript">

var golbalaaa= 1;

function test() {

var age=1;

alert(age);

}

function test1() {

var age1=2;

alert(age1);

};

test=test1;

</script>

</head>

<body>

<form>

<input type="button" onclick="test()" />

<input type="button" onclick="test1()" />

</form>

</body>

</html>

1、  函数声明与函数表达式的区别

这里定义函数声明就是带函数名的函数的定义,函数表达式就是不带函数名的函数定义。

解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),这也就意味着通过函数声明方式定义的函数可以先使用后定义;对于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行,这也就是说如果通过这种方式定义的函数必须先定义然后才能使用,否则肯定会报错(unexpected identifier)。

2、  函数的内部属性

①   arguments:数组对象,包含着传入函数中的所有参数

a)         这个对象有一个比较特殊的属性:callee,是一个指针,指向拥有这个arguments对象的函数。

②   This:this引用的是函数的执行环境对象(与这个函数处于同一级别的环境,也就是这个函数的调用者的作用域)

③   Caller:调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为null

④   Length:函数的参数的个数

⑤   Prototype:神奇的原型(先混个眼熟吧,这个东西是跟继承相关)

3、  函数的内部方法

以下两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。

①   apply():接受两个参数,一个是在其中运行函数的作用域,另一个是参数数组(可以是Array实例,也可以使arguments对象)

②   call():与apply()的区别在于接受参数的方式不同,第一个this没有变化,变化的是其余参数都直接(逐个列出来)传递给函数

以上方法真正强大的地方是能够扩充函数赖以运行的作用域,这样一来对象就可以不和方法有任何耦合关系,对象需要什么方法可以通过这种方式调用。

③   bind()。这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的参数(一般是一个对象)的作用域上。是不是有种依赖注入的味道?

六、基本包装类型

常见的OO编程语言都有基本类型的包装类型,目的是为了更方便处理基本类型数据,因为包装了之后就可以增加更多额外的功能。ECMAScript中提供了3个特殊的引用类型:Boolean、Number、String。

Ex1:

Var s1 = ‘xxxxxxxxxxxxxx’;

Var s2 = v1.substring(2);

解释器其实做了这么几个操作:创建一个String类型的实例,在这个String类型的实例上调用substring()方法,销毁这个实例。

使用new创建的引用类型的对象,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的引用类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁,这意味着我们不能再运行时为基本类型值添加属性和方法。

Boolean类型没什么好说的,主要过一下Number类型与String类型的一些常见方法。

1、  Number类型

①   toFixed():按照指定的小数位返回数值的字符串表示

②   toExponential():返回数值的指数形式表示的字符串

③   toPrecision():

2、  String类型

①   、length属性,表示包含多少个字符

②   、charAt()、charCodeAt():访问字符串中特定位置的字符

③   、concat():字符串拼接

④   、slice()、substr()、substring()

⑤   、indexOf、lastIndexOf()

⑥   、trim()

⑦   、toLowerCase()、toLocalLowerCase()、toUpperCase()、toLocalUpperCase()

⑧   、replace()

⑨   、split()

七、单体内置对象

所谓打你内置对象:有ECMAScript提供的,不依赖与宿主环境的对象。Object,Array,String等都是内置对象,这里再补充两个Global、Math。

在大多数的ECMAScript实现中都不能直接访问Global对象,不过WEB浏览器实现了承担该角色的windows对象。全局变量和函数都是Global对象的属性。Math对象提供了很多属性和方法,用于辅助完成负载的数学计算。

本文系个人读书总结,转载请注意出处

JavaScript知识总结--引用类型(Object-Array-Function-Global-Math)的更多相关文章

  1. JavaScript高级编程——引用类型、Array数组使用、栈方法

    JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...

  2. javascript学习笔记 - 引用类型 Object

    引用类型是一种数据结构,也称作对象定义,类似于类的概念. 对象是引用类型的实例. javascript引用类型有:Object, Array, Date, RegExp, Function 使用new ...

  3. JavaScript原型链以及Object,Function之间的关系

    JavaScript里任何东西都是对象,任何一个对象内部都有另一个对象叫__proto__,即原型,它可以包含任何东西让对象继承.当然__proto__本身也是一个对象,它自己也有自己的__proto ...

  4. JavaScript 如何从引用类型(Array 、 Object)创建一个新的对象

    数组的增删改 1.新增一项可以使用concat方法,它不会对原有数组进行改动,而是创建一个新数组 let a = [0, 1, 2] let b = a.concat([3]) console.log ...

  5. JavaScript学习 - 基础(五) - string/array/function/windows对象

    String对象 更详细转:http://www.w3school.com.cn/jsref/jsref_obj_string.asp //------------------------------ ...

  6. JavaScript之引用类型(Array类型)

    除了Object类型,Array是ECMAScript中最常用的类型了. 与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据. 而且,ECMAScript数组的大小是可以动态调 ...

  7. 最全的 JavaScript 知识总结

    来源于:http://gcdn.gcpowertools.com.cn/showtopic-28404-1-3.html?utm_source=gold.xitu.io&utm_medium= ...

  8. JavaScript知识精简

      JS单线程,同步,一次执行某一段代码,等到前一个程序执行完毕再执行.,阻塞,安全. 多线程,异步,不用等到前一个程序执行完毕就执行. 数据类型 JavaScript 是 弱类型 语言,但并不是没有 ...

  9. JS 深度拷贝 Object Array

    JS 深度拷贝 Object Array function cloneObj(o) { var isArray = o instanceof Array; var isObject = o insta ...

随机推荐

  1. webpack 实现自动刷新,复制文件,实现开发环境和发布环境

    webpack例子:https://github.com/Aquarius1993/webpackDemo 安装: webpack , webpack-dev-server 1.如何在使用webpac ...

  2. Qt jsoncpp 对象拷贝、删除、函数调用 demo

    /*************************************************************************************************** ...

  3. ffpmeg下rtmp踩坑记录

    1. flash端发布直播流 2.在 ffplay 命令行中 播放rtmp 直播流 ffplay "rtmp://127.0.0.1:80/live/ss live=1"  一直出 ...

  4. WEB服务器都在做哪些工作?

    作为WEB开发人员,我们肯定应该要知道WEB服务器都在做哪些工作,这里简单列举一下,有时间然后详细说明. (1)建立连接——接受一个客户端连接. (2)接收请求——从网络中读取一条 HTTP 请求报文 ...

  5. 颜色叠加模式:mix-blend-mode

    文章转自叠加模式 http://www.cgspread.com/3551.html 注释:1.混合模式的数学计算公式,另外还介绍了不透明度.2.这些公式仅适用于RGB图像,对于Lab颜色图像而言,这 ...

  6. LOJ2321. 「清华集训 2017」无限之环【费用流】

    LINK 很好的一道网络里题 首先想插头DP的还是出门左转10分代码吧 然后考虑怎么网络流 首先要保证没有漏水 也就是说每个接口一定要有对应的接口 那么发现每个点只有可能和上下左右四个点产生联通关系 ...

  7. BZOJ3926 Zjoi2015 诸神眷顾的幻想乡【广义后缀自动机】

    Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...

  8. SpringMvc的上传和下载

    第一步:配置文件加入上传和下载的<bean>全部配置文件参考上上篇博文 <!-- 配置springMVC上传文件和下载文件 --> <bean id="mult ...

  9. EditPlus 3.41 p1115 0728注册码

    EditPlus (2012-7-28 epp341p1115_0728) 注册码: 注册名:Free User 注册码:6AC8D-784D8-DDZ95-B8W3A-45TFA 注册名:Www.S ...

  10. FastAdmin 线上部署流程 (2018-05-03 更新)

    FastAdmin 线上部署流程 首次部署 建立 git 环境. 建立 composer 环境. 建立 bower 环境. 将远程项目代码 git clone 到服务器上. 执行 composer i ...