标签:
四、Function类型:
1.函数定义的方法:
2.函数的重复声明会覆盖,变量的重复声明会忽略。
1 function addSomeNumber(num){ 2 return num + 100; 3 } 4 function addSomeNumber(num) { 5 return num + 200; 6 }
以上代码相当于下面的代码,如果把函数签名看做函数指针的话,相当于函数指针从第一个函数指向了第二个函数,所以函数的重复声明,先声明的会被后声明的覆盖。
1 var addSomeNumber = function (num){ 2 return num + 100; 3 }; 4 addSomeNumber = function (num) { 5 return num + 200; 6 };
3.函数声明与函数表达式并不是相同的地位,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。
4.因为 ECMAScript 中的函数名本身就是变量,所以函数也可以作为值来使用。也就是说,不仅可以像传递参数一样把一个函数传递给另一个函数,而且可以将一个函数作为另一个函数的结果返回。
5.函数内部属性:在函数内部,有两个特殊的对象: arguments 和 this。
6.函数的属性与方法:
1 window.color = "red"; 2 var o = { color: "blue" }; 3 function sayColor(){ 4 alert(this.color); 5 } 6 sayColor(); //red 7 sayColor.call(this); //red 8 sayColor.call(window); //red 9 sayColor.call(o); //blue
1 window.color = "red"; 2 var o = { color: "blue" }; 3 function sayColor(){ 4 alert(this.color); 5 } 6 var objectSayColor = sayColor.bind(o); 7 objectSayColor(); //blue
五、基本包装类型:3 个特殊的引用类型: Boolean、 Number 和String
实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。引用类型与基本包装类型的主要区别就是对象的生存期。使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一
行代码的执行瞬间,然后立即被销毁。这意味着我们不能在运行时为基本类型值添加属性和方法。
1.Boolean类型:
Boolean 类型的实例重写了 valueOf()方法,返回基本类型值 true 或 false;重写了 toString()方法,返回字符串"true"和"false"。
基本类型与引用类型的布尔值还有两个区别。首先, typeof 操作符对基本类型返回"boolean",而对引用类型返回"object"。其次,由于 Boolean 对象是 Boolean 类型的实例,所以使用 instanceof操作符测试 Boolean 对象会返回 true,而测试基本类型的布尔值则返回 false。
2.Number类型:
Number 类型也重写了 valueOf()、 toLocaleString()和 toString()方法。重写后的 valueOf()方法返回对象表示的基本类型的数值,另外两个方法则返回字符串形式的数值。
将数值格式化为字符串的方法:
3.String类型对象:
创建包装类型:采用String构造函数来实现,var stringObject = new String("hello world");
String 类型的每个实例都有一个 length 属性,表示字符串中包含多个字符。即使字符串中包含双字节字符(比如空格),每个字符也仍然算一个字符。
方法:
1 var stringValue = "hello world"; 2 alert(stringValue.charAt(1)); //"e" 3 alert(stringValue.charCodeAt(1)); //输出"101"
1 var stringValue = "hello "; 2 var result = stringValue.concat("world"); 3 alert(result); //"hello world" 4 alert(stringValue); //"hello"
1 var stringValue = "hello world"; 2 alert(stringValue.slice(3)); //"lo world" 3 alert(stringValue.substring(3)); //"lo world" 4 alert(stringValue.substr(3)); //"lo world" 5 alert(stringValue.slice(3, 7)); //"lo w" 6 alert(stringValue.substring(3,7)); //"lo w" 7 alert(stringValue.substr(3, 7)); //"lo worl" 8 alert(stringValue.slice(-3)); //"rld" 9 alert(stringValue.substring(-3)); //"hello world" 10 alert(stringValue.substr(-3)); //"rld" 11 alert(stringValue.slice(3, -4)); //"lo w" 12 alert(stringValue.substring(3, -4)); //"hel" 13 alert(stringValue.substr(3, -4)); //""(空字符串)
1 var text = "cat, bat, sat, fat"; 2 var result = text.replace("at", "ond"); 3 alert(result); //"cond, bat, sat, fat" 4 result = text.replace(/at/g, "ond"); 5 alert(result); //"cond, bond, sond, fond"
七、单体内置对象:
1.Global对象:
encodeURI()和 encodeURIComponent()方法可以对 URI(Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器。有效的 URI 中不能包含某些字符,例如空格。而这两个 URI 编码方法就可以对 URI 进行编码,它们用特殊的 UTF-8 编码替换所有无效的字符,从而让浏览器能够接受和理解。
其中, encodeURI()主要用于整个 URI(例如, http://www.wrox.com/illegal value.htm),而 encodeURIComponent()主要用于对 URI 中的某一段(例如前面 URI 中的 illegal value.htm)进行编码。
它们的主要区别在于, encodeURI()不会对本身属于 URI 的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而 encodeURIComponent()则会对它发现的任何非标准字符进行编码。
eval():eval()方法就像是一个完整的 ECMAScript 解析器,它只接受一个参数,即要执行的 ECMAScript (或 JavaScript)字符串。不建议使用,因为会是的静态作用域混乱。
window对象
Math对象:
min()和 max()方法用于确定一组数值中的最小值和最大值。
Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数
Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数
Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数
Math.random()方法返回大于等于 0 小于 1 的一个随机数
JavaScript高级程序设计学习笔记第五章--引用类型(函数部分)
标签:
原文地址:http://www.cnblogs.com/yangxiaoguai132/p/5184146.html