作者TonyQ (沉默是金)
看板Ajax
标题Re: [问题] 关於JS在实做class的手法
时间Wed Sep 10 21:02:44 2008
※ 引述《ckaha (★闪亮数学推理★)》之铭言:
: 谢谢您的指点 果然一点就中我的问题之所在
: 当
: function Test() {
: this.key = 0;
: this.GO = function(){ alert(this.key); .... };
: this.GetKey = function(){ this.key = 2; } }; (*)
: this.setup = function() {
: document.onkeypress = this.GetKey(); <---------这步
var _this=this; //保留当前物件的参考.
document.onkeypress = function(){
this.GetKey.apply(_this);
}
: }
: }
: var test = new Test();
: test.setup();
: 但先谢谢
试试看apply(委让) 这个function的原生prototype ,
他可以改变function 中, this指向的对象.
ex.
function ckThis(){
alert(this);
}
ckThis.apply(['hi1']);
ckThis.apply(['hi2']);
ckThis();
http://tony1223.no-ip.org:81/test/testApply.html
this 的确是常常一不小心就会误用 , 而且难以检验.
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.41.124
1F:推 ckaha:WA 好方法 谢谢 09/10 21:04
2F:推 ckaha:成功了~~谢谢 09/10 21:11
3F:推 todau:推tony的方式,这是利用closure的好方式。不过,我记得是用 09/11 15:16
4F:→ todau:ckThis.call() 而不是 ckThis.apply() 的样子? 09/11 15:16
5F:→ TonyQ:有一些些细微的差异, apply可搭配 arguments 原生物件更好. 09/11 15:19
7F:→ TonyQ:主要是除了呼叫函数之外 , 也可以传参数进去. 09/11 15:19
8F:→ TonyQ:当然单就这个例子来讲 , call跟apply是都可以用的. :) 09/11 15:19
9F:→ TonyQ:关於 arguments 物件的介绍看这篇 09/11 15:21
※ 编辑: TonyQ 来自: 220.128.219.202 (09/11 15:23)