详细说说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方法起到动态改变函数指向,同时改变被指向类的一些属性。
如何制作JQuery Plugin 插件【插件参数的配置】
jQuery Mobile 中文手册 Ajax开发版——初始化部分
转载:真实的用户,真实的中国互联网
创建自定义的jQuery移动主题
HTML5 LocalStorage 本地存储
Safari调试工具
为什么项目经理拿的钱比程序员多?
移动浏览器项目WebApp需要jQuery吗?移动设备放弃jQuery的理由
HTML5设计原则
- 最新文章
-
备忘录(一)
分布式网站架构后续:zookeeper技术浅析
原创:编写jquery 选项卡插件
程序员总结:帮助你早些明白一些道理
jQuery Mobile 入门教程
HTML5 Shiv – 让该死的IE系列支持HTML5吧
jQuery Mobile 中文手册 Ajax开发版(2)
移动网站开发中常用的10段JavaScript代码
Web App和Native App 谁将是未来
Html5新标签解释及用法
- 热门文章
-
性能分析工具firebug.console.profile(title)
HTMl5的sessionStorage和localStorage
jQuery插件开发 其实很简单
【转】深度分析HTML5在移动开发方面的发展状况
触摸屏网站开发系列(一)ios web App应用程序(ios meta)
jQuery Mobile 中文手册 Ajax开发版(1)
Javascript中的函数声明和函数表达式
[翻译]jQuery Mobile入门教程——主题的使用和定制
获得2011开源大奖的jQuery Mobile1.0发布 移动开发
jQuery Mobile 动态加入的html,如何加上jqm自带的样式