var Class ={create:function(){ return function(){this.init.apply(this,arguments); } }};
var Fade =Class.create();
Fade.prototype={init:function(a,b,c){alert(arguments.length);}};
var f=new Fade("1",2);
这段代码程序输出:2. 没有问题!
但是我想问一下 Class 里面的 this.init.apply(this,arguments) 中的this 是怎么变成了Fade的..这里的this指代的是什么?
是因为var Fade=Class.create(); 这句 ,所以 this就指向Fade了吗?小弟JS接触不久,求解答!
解决方案 »
- jquery 的 each 是阻塞式的吗?
- 含有分隔符的字符串如何拆分?
- 怎样删除Ext.ux.UploadDialog上传后的文件?
- event.returnValue
- 改变导航的背景色,高手来看下啊,很急的
- toggle
- 请问各位大虾,javascript中的属性是写在构造函数中好呢还是写在prototype中好?谢谢!
- javascript中作用域,优先级等等问题, 求助中。。。。。。。。。。。。。。。
- 奇怪的问题,请问直接从地址栏进入页面 和 从其他网页链接进页面有什么不同哦?
- 终于得到一颗星了!散分我高兴呀!
- 如何将其拼接为10,A|11,B| ,如果只有10,A的话 就是10,A|
- 新人问题,CSDN里我头像名字低下的昵称在哪里改,马上结贴
{
this.init.apply(this,arguments)
}Fade.prototype={
init:function(a,b,c)
{
alert(arguments.length);
}
};var f=new Fade("1",2);调用create以后变成了这样 , 这个this自然是 Fade啊
//你这样看,下面两句是相同的。你说this是不是指向Fade呢
var Fade = Class.create();
var Fade = function () {
this.init.apply(this, arguments);
}
this.init.apply(this,arguments);
};所以fade 只是一个函数,可以用他来充当构造器。2. JS中的this始终指向当前对象。
3. new 运算符的工作过程是这样:
3.1 初始化一个空对象并将this指向这个空对象。
3.2 将空对象交给构造器进行加工。 打个比方,C++等面向对象的语言中,对象的一些属性
和方法从他创建的哪一个就定下来了,就好比老鼠生下来
就是老鼠,生下来就注定会打洞。
但JS中一切对象开始都是平等的,大家一
开始什么都没有(或者只有简答的一些公共属性),都是
白纸一张(空对象),需要你用不同的培训机构(构造器)
对他进行培训。构造器里边详细的介绍了你该做什么,this
就是指你自己。
这和我们人很像,没有人生下来是将军,必须通过不断的
磨练才可以。