Function类型
Es5中规范了另一个函数对象的属性:caller,这个属性中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,这它的值为null
function outer(){ Inner(); } function inner(){ alert(inner.caller) } outer();
inner.caller指向outer
为了实现更松散的耦合 也可以通过arguments.callee.caller来访问相同的信息,如下代码:
function outer(){ inner(); } function inner(){ alert(arguments.callee.caller) } outer();
es中函数是对象,因此函数也有属性和方法,每个函数到包含两个属性:length和prototype,其中length属性表示函数希望接收的命名参数的个数
对于es中的引用类型而言,protorype是保存它们所有实例方法的真正所在,换句话说,诸如toString和valueOf等方法实际上都是保存在prototype名下,只不过是通过各自对象的实例反问罢了,es5中,prototype属性是不可枚举的,因此使用for-in无法发现,
每个函数都包含两个非继承而来的方法:apply和call
apply方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组(技巧可以用个方法将参数是逗号的转化为数组)
call方法与apply方法的作用项目,他们的区别仅在于接收参数的方式不同,对于call方法而言,第一个参数是this值没有变化,变化的是其余参数都直接传递给函数.
var s1=”some text”; var s2=s1.substring(2);
这段代码其实做了如下操作:
1\ 创建String 类型的一个实例
2\ 在实例上调用制定的方法
3\ 销毁这个实例
可以将以上三个步骤想象成执行下列se代码.
var s1=new String(“some text”); var s2=s1.substring(2); s1=null;
引用类型和基本包装类型的主要区别就是对象的生存期,使用new 操作符穿件引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中,而自读创建的基本包类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁,例如:
var s1=”some text”; s1.color=”red”; alert(s1.color)//undefined
String 类型
- 字符方法
charAt和charCodeAt,这两个方法都接收一个参数,即基于0的字符围着,其中,charAt方法单字符字符串的形式返回给定围着的那个字符.
charCodeAt返回的是字符编码
- 字符串操作方法:
concat:用于将一或多个字符串拼接起来,返回拼接得到的新字符串.
slice:第一个参数指定子字符串的开始位置,第二个参数书字符串到哪里结束,传负值时是从后面开始截取
substring: 第一个参数指定子字符串的开始位置,第二个参数书字符串到哪里结束,传负值时截取全部
substr: 第一个参数指定子字符串的开始位置,第二个参数指定的则是返回的字符串个数
- 字符串位置方法
IndexOf和lastIndexOf这两个方法都是从一个字符串中搜索给定的子字符串,然后返子字符串的位置,这两个方法的区别在于:indexOf方法从子字符串的开头向后搜索字符串,而lastIndexOf方法是从字符串的末尾向前搜索子字符串
- trim方法
es5位字符串添加了trim方法,这个方法会创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果.
- 字符串大小写转换方法
- 大小写转换方法有:
toLowerCase()//小写,toLocaleLowerCase()//小写,toUpperCase()//大写和toLocaleUpperCase()//大写
- 字符串的模式匹配方法
match方法是在字符串上调用这个方法,本质上与调用RegExp的exec方法相同,只接受一个参数.
search方法是用于查找,一个参数,由字符串或RegExp对象指定的一个正则表达式,search方法返回字符串中第一个匹配项的索引.
localeCompare() 方法比较两个字符串,并返回下列值中的一个
- l 如果字符串在字母表中应该排在字符串参数之前,则返回一个负数,
- l 如果字符串等于字符串参数则返回0
- l 如果字符串在字母表中应该排在字符串参数之后,则返回一个正数
Global对象
1、 URI编码方法
Global 对象的 encodeURI()和encodeURIComponent方法可以对URI进行编码,以便发送给浏览器,有效的URI中不能包含某些字符串,例如空格,而这两个URI编码方法就可以对URI进行编码,他们用特殊的UTF-8编码替换所有无效的字符,从而让浏览器能够接受.
他们的区别在于:encodeURI不会对本身属于URI的特殊字符进行编码,例如冒号,正斜杠,问号和井号,而encodeURIComponent则会对它发现的任何非标准字符串进行编码
2、 eval
eval方法就像是一个完整的es解析器,它只接受一个参数,即要执行js字符串
3、 Math对象
min和max方法:
它们用于确定一组数值中的最小值和最大值,这两个方法都可以接收任意多个数值参数.
可以利用apply方法可以把数值作为参数传入min和max中,例如:
var values=[1,2,3,4,5,6,7,8];
var max=Math.max.apply(Math,values);
这个技巧的关键是把Math对象作为apply的第一个参数,从而正确地设置this值,然后可以将任何数值作为第二个参数.
Math.cell()执行向上舍入,即它总是将数值向上舍入为最接近的整数
Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数
Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数
Math.random方法返回0和1之间一个随机数,不包括0和1,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件,套用下面的公司就可以利用Math.random从某个整数范围中随机选择一个值.
值=Math.floor(Math.random()*可能值的总数+第一个可能的值)
javascript高级编程笔记04(基本概念)的更多相关文章
-
javascript高级编程笔记01(基本概念)
1.在html中使用JavaScript 1. <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...
-
javascript高级编程笔记02(基本概念)
ParseInt()函数: 由于Number函数在转换字符串时比较复杂而且不合理,我们常常转换字符串都用parseInt函数, Parseint函数规则: 忽略字符串前面的空格,直到找到第一个非空格字 ...
-
javascript高级编程笔记05(面向对象)
面向对象设计 es中有两种属性:数据属性和访问器属性 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性 [[Configurable]]:表示能否通 ...
-
javascript高级编程笔记06(面相对象2)
1) 构造函数模式 es中的构造函数可以用来创建特定类型的对象,像Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中,此外,也可以创建自定义的构造函数,从而定义自定义对象类型 ...
-
javascript高级编程笔记03(正则表达式)
引用类型 检测数组 注:我们实际开发中经常遇到要把数组转化成以逗号隔开,我以前都是join来实现,其实又更简单的方法可以用toString方法,它会自动用逗号隔开转换成字符串,其实toString内部 ...
-
Android高级编程笔记(四)深入探讨Activity(转)
在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...
-
JavaScript高级编程———JSON
JavaScript高级编程———JSON < script > /*JSON的语法可以表达一下三种类型的值 简单值:使用与javas相同的语法,可以在JSON中表达字符串.数值.布尔值和 ...
-
JavaScript高级编程———基本包装类型String和单体内置对象Math
JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...
-
JavaScript高级编程——Date类型
JavaScript高级编程——Date类型 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...
随机推荐
-
Java如何读取XML文件 具体实现
转载自:http://www.jb51.net/article/44338.htm import java.io.*; import javax.xml.parsers.DocumentBuilder ...
-
如何消除inline-block产生的元素间空隙
前端初学者可能都会碰到这个问题:有时候排版需要,会把一些块状元素的display属性设置为inline-block,如 <!-- HTML代码 --> <div class=&quo ...
-
如何在关闭ssh连接的情况下,让程序继续运行?
[http://blog.csdn.net/smstong/article/details/5872309] 对Unix,Linux类服务器维护经常是通过ssh完成的,而有些操作比较费时,如更新程序等 ...
-
C# 控件消失等问题
控件消失原因: 1.新控件的触发导致页面重载,该重载有没有达到原有控件的触发状态进而消失. 2.(目前只发现这一点,后续又发现再更...) 1.示例: ASPX: <div> <!- ...
-
[2016北京集训试题8]连在一起的幻想乡[dp+无向图计数]
Description Solution 本博客参考yww大佬的博客,为了加深理解我就自己再写一遍啦. 以下的“无向图”均无重边无自环. 定义f0[n]为n个点构成的无向图个数,f1[n]为n个点构成 ...
-
SGU 126	Boxes(模拟题|二进制)
Translate:Sgu/126 126. 盒子 time limit per test: 0.5 sec. memory limit per test: 4096 KB 有两个盒子. 第一个盒子里 ...
-
Python中字符串拼接的N种方法
python拼接字符串一般有以下几种方法: ①直接通过(+)操作符拼接 s = 'Hello'+' '+'World'+'!'print(s) 输出结果:Hello World! 使用这种方式进行字符 ...
-
北京Uber优步司机奖励政策(11月30日~12月4日)
用户组:人民优步(适用于12月1日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:htt ...
-
ubuntu中使用virtualbox遇到Kernel driver not installed (rc=-1908)错误
百度之后得到解决,再此做个笔记 错误提示 Kernel driver not installed (rc=-1908) The VirtualBox Linux kernel driver (vbox ...
-
第二百一十七节,jQuery EasyUI,NumberSpinner(数字微调)组件
jQuery EasyUI,NumberSpinner(数字微调)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 NumberSpinner ...