var Class = {
create: function(){
return function(){
this.w.apply(this,arguments);//这里的this是谁??arguments又是指向的哪个函数??
}
}
}
var a=Class.create()//这句有什么用???
a.prototype={
w:function(x){
alert(x)
}
}
create: function(){
return function(){
this.w.apply(this,arguments);//这里的this是谁??arguments又是指向的哪个函数??
}
}
}
var a=Class.create()//这句有什么用???
a.prototype={
w:function(x){
alert(x)
}
}
var Class = {
create: function(){
return function(){
this.w.apply(this,arguments);//this表示作用域,从上下文来看,应该是a;arguments是指你传入参数的集合,是一个数组。
}
}
}
var a=Class.create() 创建一个匿名函数,this指针指向这个函数,并把this指针赋值给a.
a.prototype={
w:function(x){
alert(x)
}
}
var a = Class.create();
此时 a = function(){ this.w.apply(this.arguments) }之后指定了a的prototype。如果 var a = new a(),则会复制这个prototype并调用构造器 a,调用a则调用当前复制出来的对象中的w方法(这句 this.w.apply(this,arguments) apply是Function类型的原型方法,意为在指定的对象为作用域执行该方法)。 此时this指向这个新对象。Function类型很活,可以做为构造器,可以作为对象的成员方法,或者可以随意的指定作为某个对象的方法进行调用(call/apply),建议多看一下javascript语义原理方面的书
new a(arguments)等于w(x)所以new a(33) 将弹出33
a.prototype={
a:"aaaaa",
b:function(){this.c="ccc"},
d:function(x){alert(x)},
e:function(){
alert(this.a)//弹出aaaaa
return function(){
alert(this.a)//弹出function(){this.b()}
return function(){
alert(this.a)//弹出function(){this.b()}
return function(){
alert(this.a)//弹出function(){this.b()}
}
}
}}
}
var b=new a()
b.e()()()()
a.prototype={
a:"aaaaa",
b:function(){this.c="ccc"},
d:function(x){alert(x)},
e:function(){
a="1111"//覆盖了window.a
alert(a)//弹出1111
return function(){
var a="22222"//如果不加var ,window.a将被覆盖为22222
alert(a)//弹出2222
return function(){
// a="33333"
alert(a)//弹出2222
return function(){
alert(a)//弹出2222
}
}
}}
}
var b=new a()
b.e()()()()
alert(a)//弹出1111