详细说说ActionScript中function的call()方法和apply()方法

简介: 详细说说ActionScript中function的call()方法和apply()方法 今天看到function的call和apply这两个方法,上网查了一下,有人说这两个方法是用来动态改变函数指向,并给了一个例子:如下  import customize.

详细说说ActionScript中function的call()方法和apply()方法

今天看到function的call和apply这两个方法,上网查了一下,有人说这两个方法是用来动态改变函数指向,并给了一个例子:如下

 import customize.my_class;
   
    public var _property:String;
   
    public function init():void
    {  
        var fn:Function = new Function();
        fn = function(...args):void
        {
            this._property = args;
        }
    
        var __obj:my_class = new my_class();
        //fn.call(__obj, "给属性赋值");
        fn.apply(__obj, new Array("给属性赋值"));
    
       trace(__obj._property);
    }
=====================================
定义的my_class类
public class my_class
{
      public var _property:String;
      public function my_class()
      {
          this._property = "somiok";
      }

从上面代码可见fn函数是用函数表达式形式申明的,此时是可以动态改变函数指向的(也就是函数的this关键字随着函数的附着而改变)。

而我用函数语句形式试了一下,函数并不能动态改变自己的指向,只能起到执行函数的作用。

import customize.my_class;

public var _property:String;

public function init():void

 var __obj:my_class = new my_class();
 //fn.call(__obj, "给属性赋值");
 fn.apply(__obj, new Array("给属性赋值"));
 
 trace(__obj._property);
}

private function fn(...args):void
{
 this._property = args.toString();
}
=====================================
 定义的my_class类
public class my_class
{
 public var _property:String;
 public function my_class()
 {
  this._property = "somiok";
 }
}

后来查了黑羽老大的书:函数语句定义法和函数表达式定义法的不同还体现在this关键字的记忆上。使用函数语句定义法,则this关键字牢牢指向当前函数定义的域;若使用函数表达式定义法,则随着函数附着的对象不同,this关键字也随之改变。

语句定义法需先声明后调用的原则。

总结:如果函数是函数语句定义的形式:则call方法和apply方法只起到执行函数的作用。

如果函数是函数表达式定义形式:则call方法和apply方法起到动态改变函数指向,同时改变被指向类的一些属性。

posted @ 2010-06-30 18:04 硕气书生 Views(201) Comments(0) Edit 收藏
1768523.html?type=1&webview=1
相关文章
|
4月前
|
数据采集 自然语言处理 Devops
ToolLearning Eval:CodeFuse发布首个中文Function Call的大语言模型评测基准!🚀
CodeFuse发布了首个面向ToolLearning领域的中文评测基准ToolLearning-Eval,以帮助开发者跟踪ToolLearning领域大模型的进展,并了解各个ToolLearning领域大模型的优势与不足。ToolLearning-Eval按照Function Call流程进行划分,包含工具选择、工具调用、工具执行结果总结这三个过程,方便通用模型可以对各个过程进行评测分析。
340 0
|
1月前
|
JavaScript
Vue子组件调用父组件方法并传参的5种方式:$emit触发、传入子组件function、访问父组件$parent.function、用inject关联父组件provide的方法、用window.fun
Vue子组件调用父组件方法并传参的5种方式:$emit触发、传入子组件function、访问父组件$parent.function、用inject关联父组件provide的方法、用window.fun
|
6月前
Fatal error: Call to undefined function openssl_pkey_get_private()
Fatal error: Call to undefined function openssl_pkey_get_private()
35 0
|
5月前
|
Python
Python(二十九)pycharm连接调试器失败 Interrupted function call accept failed~
Pycharm在使用调试器模式时报错: Interrupted function call: accept failed
99 0
|
9月前
|
监控 Linux Apache
访问zabbix安装页面报错500,apache报错Call to undefined function mb_detect_encoding()
访问zabbix安装页面报错500,apache报错Call to undefined function mb_detect_encoding()
146 0
|
10月前
|
PHP
PHP报错Call to undefined function utf8_decode()的解决方案
PHP报错Call to undefined function utf8_decode()的解决方案
|
11月前
|
搜索推荐 Java API
基于OpenAI Function Call 结合Lucene实现本地化的知识搜索
这是一个OpenAI Function 接入的Demo,通过Lucene+OpenAI实现个人知识库,但是目前只有服务端,没有页面之类的东西,并且实现的非常简单,所以只能当做一个Demo使用。
348 0
基于OpenAI Function Call 结合Lucene实现本地化的知识搜索
|
3天前
|
JavaScript 前端开发
在JavaScript中,函数原型(Function Prototype)是一个特殊的对象
【5月更文挑战第11天】JavaScript中的函数原型是一个特殊对象,它为所有函数实例提供共享的方法和属性。每个函数在创建时都有一个`prototype`属性,指向原型对象。利用原型,我们可以向所有实例添加方法和属性,实现继承。例如,我们定义一个`Person`函数,向其原型添加`greet`方法,然后创建实例`john`和`jane`,它们都能调用这个方法。尽管可以直接在原型上添加方法,但推荐在构造函数内部定义以封装数据和逻辑。
10 2
|
7天前
|
存储 算法 对象存储
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
14 1

热门文章

最新文章