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

作者:子乌 来源:蓝色理想 时间: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
投稿

猜你喜欢

  • PHP 正则判断中文UTF-8或GBK的思路及具体实现

    2024-06-05 09:49:00
  • Python正确重载运算符的方法示例详解

    2022-01-13 21:35:42
  • Python是编译运行的验证方法

    2021-03-15 04:25:10
  • redux-saga 初识和使用

    2023-07-15 16:20:17
  • Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法

    2021-06-26 12:42:36
  • css基础教程布局篇之一

    2008-07-31 17:21:00
  • Python tempfile模块生成临时文件和临时目录

    2022-06-28 05:20:20
  • php去除html标记的原生函数详解

    2024-03-17 20:23:22
  • python实现最小二乘法线性拟合

    2022-04-01 03:46:49
  • PyQt5的相对布局管理的实现

    2022-02-23 08:11:18
  • vue中对虚拟dom的理解知识点总结

    2024-05-05 09:23:54
  • 将文本输入框内容加入表中的js代码

    2024-04-28 09:50:40
  • MySQL 表数据的导入导出操作示例

    2024-01-18 17:20:19
  • Python __all__变量用法示例详解

    2023-05-13 01:40:11
  • Python asyncio的一个坑

    2022-04-06 20:58:28
  • Python数据获取实现图片数据提取

    2022-08-15 03:37:30
  • python Pandas中数据的合并与分组聚合

    2023-06-28 12:48:04
  • Webots下载安装 + Pycharm联调使用教程

    2023-02-20 23:35:43
  • Blender Python编程创建发光材质示例详解

    2022-08-20 21:06:19
  • Python中range函数的基本用法完全解读

    2021-02-28 05:33:45
  • asp之家 网络编程 m.aspxhome.com