JavaScript 艺术之美(四)函数和对象

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块,当调用该函数时,会执行函数内的代码;JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等,在 JavaScript 中,对象是拥有属性和方法的数据。

一、函数

一个简单的示例函数:

function shout() {
    var beatles = Array("John","Paul","George","Ringo");
    for (var count = 0; count < beatles.length; count++) {
    alert (beatles[count]);
}
}

可以随时使用以下语句调用该函数:
shout()
把传递给函数的数据称为参数,定义一个函数的语法:

function name(arguments) {
    statements;
}

定义函数时,可以为它声明任意多个参数,用逗号分隔开:

function multiply(num1,um2) {
    var total = num1*num2;
    alert(total);
}

可以在定义了这个函数的脚本里任意位置调用这个函数:
multiply(10,3);
函数不仅能够(以参数形式)接受数据,还能够返回数据,创建一个函数并让它返回一个数值、一个字符串、一个数组或一个布尔值,需要用到return语句:

function multiply(num1,num2) {
    var total = num1*num2;
    return total;
}

可以把一个函数的调用结果赋给一个变量:

//以下函数将华摄度转换成摄氏度
function convertToCelsius(temp) {
    var result = temp-32;
    result = result/1.8;
    return result;
}
//将该函数的调用结果赋给一个变量
var temp_f = 95;
var temp_c = convertToCelsius(temp_f);
alert(temp_c);

变量和函数命名规范:
JavaScript不允许函数和变量名里包含空格,命名变量时,用下划线分隔各个单词,命名函数时,一般使用驼峰命名法,从第二个单词开始把每个单词的第一个字母写成大写形式。

二、变量的作用域

  1. 全局变量 可以在脚本中的任何位置被引用,作用域是整个脚本。
  2. 局部变量 只存在于声明它的那个函数的内部,作用域仅限于某个特定的函数

可以用var关键字明确地为函数变量设定作用域,如果在某个函数中使用了var,那个变量就将被视为一个局部变量,它只存在于这个函数的上下文中,反之。
如果脚本里已经存在一个与之相同的全局变量,这个函数就会改变那个全局变量的值:

function square(num) {
    total = num*num;
    return total;
}
var total = 50;
var number = square(20);
alert(total);

全局变量 total 的值变成了400,因为未把这个函数内部的total变量明确声明为局部变量:

function square(num) {
    var total = num*num;
    return total;
}
var total = 50;
var number = square(20);
alert(total);

运行以上代码total值为50。

三、对象

对象是自包含的数据集合,包含在对象里的数据可以通过两种形式访问————属性和方法:
- 属性是隶属于某个特定对象的变量;
- 方法是只有某个特定对象才能调用的函数。

在JavaScript里,属性和方法都使用“点”语法来访问:

Objec.property
Object.method()

创建新对象有两种不同的方法:
1. 定义并创建对象的实例
2. 使用函数来定义对象,然后创建新的对象实例

下面脚本创建了对象的一个新实例,并向其添加了四个属性:

person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";

以上代码可改写为:
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
为给定对象创建一个新实例需要使用new关键字:

var jermy = new person;

内建对象

JavaScript提供了一些预先定义好了的对象,这些可以拿来就用的对象称为内建对象。

宿主对象

由浏览器提供的预定义对象被称为宿主对象。