教程javascript的function(函数)(5)

作者:子乌 来源:蓝色理想 时间:2007-09-30 13:38:00 

调用哪个函数?

你也许正在想命名冲突的问题。比如,下面哪一个叫做calculate的函数会被调用?

Example 8

CODE:

function calculate(number)
{
  return number/3;
}

function getHalfOf(num1, num2, num3)    
{
  function calculate(number)
  {
    return number/2;
  }

  var result="";
  result+=calculate(num1)+" ";
  result+=calculate(num2)+" ";
  result+=calculate(num3);
}        
var resultString=getHalfOf(10,20,30);
alert(resultString);         // 输出 "5 10 15"


在这个例子中,编译器会首先搜索局部内存地址,所以它会使用内嵌的calculate函数。如果我们删除了这个内嵌(局部)的calculate函数,这个代码会使用全局的calculate函数。

函数:数据类型及构造函数

让我们来看看函数的另一个特殊功能--这让它和其它对象类型截然不同。一个函数能够用来作为一个数据类型的蓝图。这个特性通常被用在面向对象编程中来模拟用户自定义数据类型(user defined data type)。使用用户自定义数据类型创建的对象通常被成为用户自定义对象(user defined object)。

数据类型

在定义了一个函数之后,我们也同时创建了一个新的数据类型。这个数据类型能够用来创建一个新对象。下例,我创建了一个叫做Ball的新数据类型。

Example DT1

CODE:

function Ball()
{
}
var ball0=new Ball(); // ball0 现在指向一个新对象

alert(ball0);         // 输出 "Object",因为 ball0 现在是一个对象


这样看来,ball0=new Ball()作了什么?new关键字创建了一个类型是Object的新对象(叫做ball0)。然后它会执行Ball(),并将这个引用传给ball0(用于调用对象)。下面,你会看到这条消息:“creating new Ball”,如果Ball()实际上被运行的话。

Example DT2

CODE:

function Ball(message)
{
  alert(message);
}
var ball0=new Ball("creating new Ball");  // 创建对象并输出消息
ball0.name="ball-0";                      // ball0现在有一个属性:name
alert(ball0.name);                        // 输出 "ball-0"


我们可以把上面这段代码的第6行看做是底下的代码6-8行的一个简写:

CODE:

function Ball(message)
{
  alert(message);
}
var ball0=new Object();
ball0.construct=Ball;
ball0.construct("creating new ball");  // 执行 ball0.Ball("creating..");
ball0.name="ball-0";                     
alert(ball0.name);        


这行代码ball0.construct=Ball和Example 4中的ptr=myFunction语法一致。

如果你还是不明白这行的含义那就回过头再复习一下Example 4。注意:你也许考虑直接运行ball0.Ball("..."),但是它不会起作用的,因为ball0并没有一个叫做Ball("...")的属性,并且它也不知道你究竟想作些什么。

标签:function,函数
0
投稿

猜你喜欢

  • 解决python 读取npy文件太大不能完全显示的问题

    2021-08-20 12:07:19
  • 用ASP实现域名绑定子目录

    2009-03-11 13:28:00
  • 对Python 除法负数取商的取整方式详解

    2023-10-02 20:21:41
  • python 读取串口数据的示例

    2021-08-30 11:10:26
  • sql中的 IF 条件语句的用法详解

    2024-01-17 12:37:12
  • 利用python实现xml与数据库读取转换的方法

    2024-01-23 06:27:51
  • MySQL 如何查询当前最新事务ID

    2024-01-28 17:23:42
  • 详解如何在cmd命令窗口中搭建简单的python开发环境

    2021-08-21 08:03:08
  • python3 删除所有自定义变量的操作

    2023-09-26 03:26:08
  • php+js实现倒计时功能

    2023-11-12 17:16:29
  • 如何利用Python实现简单C++程序范围分析

    2022-07-19 00:32:48
  • mvc中form表单提交的三种方式(推荐)

    2024-04-18 10:55:33
  • Python Asyncio中Coroutines,Tasks,Future可等待对象的关系及作用

    2021-02-09 02:01:47
  • python爬虫爬取笔趣网小说网站过程图解

    2022-10-06 10:56:50
  • MySQL DDL 引发的同步延迟该如何解决

    2024-01-26 19:44:00
  • MySQL 处理重复数据的方法(防止、删除)

    2024-01-13 20:46:35
  • python 对dataframe下面的值进行大规模赋值方法

    2022-01-08 07:04:19
  • SQL Server如何插入数据示例代码

    2024-01-13 16:42:33
  • python flask开发的简单基金查询工具

    2023-10-29 21:35:42
  • 如何在python字符串中输入纯粹的{}

    2023-09-21 22:56:41
  • asp之家 网络编程 m.aspxhome.com