JavaScript极简入门教程(二):对象和函数(3)
// Test 被叫做构造函数
var Test = function(string) {
this.message = string;
}
var myTest = new Test("Hello World");
一个函数前面可以加上 new 来调用(这样的函数通常大写开头),加上 new 之后将创建一个链接到此函数的 prototype 属性的对象,且构造函数中 this 为此对象。
4.apply 调用模式。函数的 apply 方法被用于调用函数,其有两个参数,第一个为 this,第二个为参数数组,例如:
var add = function(a, b) {
return a + b;
}
var ret = add.apply(null, [3, 4]); // ret === 7
函数调用时,我们能够访问一个名为 arguments 的类数组(非真正的 JavaScript 数组),其包含了所有的实参,这样我们就能实现变长参数:
var add = function() {
var sum = 0;
for (var i=0; i<arguments.length; ++i) {
sum += arguments[i];
}
return sum;
}
add(1, 2, 3, 4);
异常
现在来说说 JavaScript 的异常处理机制。我们使用 throw 语句来抛出异常,try-cache 语句来捕获并处理异常:
var add = function (a, b) {
if (typeof a !== 'number' || typeof b !== 'number') {
// 抛出异常
throw {
name: 'TypeError',
message: 'add needs numbers'
};
}
return a + b;
}
// 捕获并处理异常
try {
add("seven");
// e 为抛出的异常对象
} catch (e) {
console.log(e.name + ': ' + e.message);
}
为JavaScript 类型添加属性
JavaScript 中大多数类型存在构造函数:
1.对象的构造函数为 Object
2.数组的构造函数为 Array
3.函数的构造函数为 Function
4.字符串的构造函数为 String
5.数字的构造函数为 Number
6.布尔的构造函数为 Boolean
7.正则表达式的构造函数为 RegExp
我们可以向构造函数的 prototype 添加属性(常添加方法),使得此属性对相关变量可用:
Number.prototype.integer = function() {
return Math[this < 0 ? 'ceil' : 'floor'](this);
}
(1.1).integer(); // 1
作用域
JavaScript 需要通过函数来构建作用域:
function() {
// ...
}();
这里创建并执行了一个匿名函数。通过作用域能够隐藏不希望暴露的变量: