文档章节

《Javascript高级程序设计》学习记录(二)

sunshinewyf
 sunshinewyf
发布于 2015/11/15 16:56
字数 1010
阅读 54
收藏 0

《Javascript高级程序设计》学习记录(二)

 

引用对象,由上一次的总结可以得出,基本类型有Number,Boolean,Undefined,String,Null,而引用类型也有许多种,现在介绍一些引用类型我个人觉得比较混淆的地方

(一)Object类型

(1)创建对象的方法有如下两种:

 

   1:构造函数法:var person = new Person();

   在这里,虽然构造函数也是一种函数,但是我们在命名的时候,一般都是将构造函数的首字母大写,以和其他普通函数保持区别

 

   2:对象字面量:如下所示:

    var person = {

       name = 'sunshine',

       age = '21'

    }

 

 (2)在访问对象的属性和方法的时候,有点表示法和方括号表示法,两者没有区别,唯一一点就是方括号表示法可以使用变量来访问属性,例如:

Var index = ‘age’;

Alert(person[index];

这在点表示法中是行不通的,其次,如果对象属性名中包含空格,也必须使用方括号表示法

(二)Array类型

(1)创建array类型也有两种方式

1:构造函数法:eg  var color = new Array();

2:数组字面量表示法: var color = [‘red’,‘purple’,’black’];

(2)数组的检测

  仅仅对数组执行instanceof操作的检测,并不能严格检测出数组,因为一旦页面中包含了多个框架,那么就存在两个或者以上的全局执行环境,这样就会有两个以上不同版本的Array()构造函数,可能会引发一系列问题

所以可以采用ES5中的array.isArray()方法进行检测

Eg: if(Array.isArray()){

}

(3)Array引用类型的一系类函数:push(),pop(),shift(),unshift(),sort(),reverse(),concat(),slice(),splice(),indexOf(),every(),some(),map(),filter(),forEach(),reduce(),reduceRight()

(三)Date对象

  创建一个日期对象,使用如下方法:

Var now = new Date();

当不传入参数的时候,默认获得当前日期和时间,如果想根据特定的日期和时间创建对象,必须传入表示该日期的毫秒数,Es中提供了两个方法,一个是Date.parse(),另外一个是Date.UTC();

要注意date对象中的getMonth()函数的下标是按照数组的下标来获取相应的月份的,比如获取3月,则应该是getMonth(2);

(四)RegExp类型

创建方法:(1)字面量形式创建:eg:var patter = /at/g;

(2)构造函数方法:eg: var patter = new RegExp(“/at/g”);

(五)Function类型

(1)使用不带圆括号的函数名是访问函数指针,而非调用函数

(2)Js中的函数没有重载

(3)函数的内部属性:在函数内部,有两个特殊的对象,arguments和this,其中arguments的主要用途是保存函数参数,且arguments对象有一个callee的属性,指向拥有这个arguments对象的函数,其使用例子为:

Function factorial(num){
  if(num<=1){

  Return 1;

}else{

Return num*arguments.callee(num-1);

}

}

(2)ES5也规定了一个函数对象caller,这个属性中保存的调用当前函数的函数的引用,除了在opera的早期版本中不支持外,其他都支持
eg:function outer(){
    inner();
}
function inner(){
    alert(arguments.callee.caller);
}
outer;
(3)apply()和call()
这两个方法的用途都是在特定的作用域中调用函数,实际上就是自己设置this的指向
区别:apply()方法接收两个参数,一个是在其中运行函数的作用域,另外是参数数组
eg:function sum(num1,num2){
    return num1+num;
}
function callsum(num1,num2){
    return sum.apply(this,[num1,num2]);
    //或者是return sum.apply(this,arguments);
}
call()方法和apply()的区别就是接收参数的方式不同,第一个参数和apply()是一样的,但是传递给函数的参数必须逐个列举出来,所以上面的应该改为:
 
 return sum.call(this,num1,num2);

 (六)String类型
 (1)该类型的构造方式有:1:var str = "hello world";或者 var str = new String('hello world');

  (2)string类型的方法:charAt(),charCodeAt(),concat(),slice(),substr(),substring(),indexOf(),lastIndexOf(),trim(),toLowerCase()等等

 

© 著作权归作者所有

sunshinewyf
粉丝 17
博文 97
码字总数 64205
作品 0
武汉
程序员
私信 提问
分享51本关于JavaScript方面的学习书籍(免费下载)

分享51本关于JavaScript方面的学习书籍(免费下载) 1、JavaScript面向对象15分钟教程 2、原型、作用域、闭包的完整解释 3、Javascript面向对象特性实现(封装、继承、接口) 4、JavaScript面向...

邓剑彬
2012/12/02
1K
12
如何学习Javascript?你是入门,还是精通?

首先要说明的是,咱现在不是高手,最多还是一个半桶水,算是入了JS的门。   谈不上经验,都是一些教训。   这个时候有人要说,“靠,你丫半桶水,凭啥教我们”。您先别急着骂,先听我说。...

coffeescript
2014/07/23
535
0
javascript 完美继承机制

有关javascript的继承在《javascript 高级程序设计》第三版 中讲的很详细,也极力推荐初学者学习本书。 function object(o){function F(){}F.prototype = o;return new F();} function inher...

造化玉碟
2014/04/28
679
0
重学js之JavaScript简介

注意: 本文章为 《重学js之JavaScript高级程序设计》系列第一章。 关于《重学js之JavaScript高级程序设计》是重新回顾js基础的学习。 JavaScript是一种专门为网页交互而设计的脚本语言,主要...

故事胶片
05/27
0
0
《一名【合格】前端工程师的自检清单》答案参考(一)

开篇 最近这个文章很火,列了【合格】前端工程师需要掌握的技能表,看到作者一直不断自省和学习来保持竞争力,同为前端工程师深感惭愧,故写下此文简要回答一下文章里提到的技术问题,技术一...

前端李会旺
04/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 7系统增加swap

转载请注明文章出处:CentOS 7系统增加swap swap是位于磁盘上的特殊文件(或分区),属于“虚拟内存”的一部分。通俗点就是内存的备胎,内存充足的情况下,基本上没swap什么事(和设置有关)...

tlanyan
22分钟前
2
0
基于Prometheus和Grafana的监控平台 - 环境搭建

相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics。 Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。比如我们说...

JAVA日知录
今天
5
0
PHP运行时全局构造体

struct _php_core_globals { zend_bool magic_quotes_gpc; // 是否对输入的GET/POST/Cookie数据使用自动字符串转义。 zend_bool magic_quotes_runtime; //是否对运行时从外部资源产生的数据使...

冻结not
今天
4
0
webpack插件html-webpack-plugin

本文转载于:专业的前端网站→webpack插件html-webpack-plugin 1、插件安装 npm install html-webpack-plugin --save-dev 2、插件使用 webpack.config.js配置文件为: var htmlWebpackPlugin=...

前端老手
今天
6
0
数据挖掘

zhengchen1996
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部