var outCount = 0;
function ClassA()
{
var inCount = 0;
this.myFun = function()
{
alert( outCount + " " + inCount );
++outCount;
++inCount;
}
}
ClassA.call(ClassA);
window.ClassA.myFun(); var aaaa = new ClassA();
aaaa.myFun(); 代码先输出“0 0”,再输出“1 0”。 问题1:ClassA是一个“类”,还是一个“函数”,为什么声明的时候用一个“function”关键字; 问题2:为什么两次输出的 inCount 都是 0 ?我本以为应该先是 0 , 再是 1 ; 问题3:ClassA.call(ClassA);是什么意思?有人说“call”用于继承,有人说用于改变 this 指针……
function ClassA()
{
var inCount = 0;
this.myFun = function()
{
alert( outCount + " " + inCount );
++outCount;
++inCount;
}
}
ClassA.call(ClassA);
window.ClassA.myFun(); var aaaa = new ClassA();
aaaa.myFun(); 代码先输出“0 0”,再输出“1 0”。 问题1:ClassA是一个“类”,还是一个“函数”,为什么声明的时候用一个“function”关键字; 问题2:为什么两次输出的 inCount 都是 0 ?我本以为应该先是 0 , 再是 1 ; 问题3:ClassA.call(ClassA);是什么意思?有人说“call”用于继承,有人说用于改变 this 指针……
我最不明白的还是第一种调用方式: ClassA.call(ClassA);
window.ClassA.myFun();首先,call 是用来干嘛的?其次,这里调用的 myFun() 是属于哪个对象的?是不是说,这有一个属于 window 的 ClassA 匿名对象?
几个关键字 好好去网上搜索看看具体说明 和理解下意思
这几个 东西 光靠一点点回复 是看不懂的
这一句会执行function ClassA(), 其中的this由ClassA对象替换,即:ClassA.myFun=function(){...},从而实现为ClassA添加myFun()的属性。
如果没有这一句,直接写ClassA.myFun()是undefined.
而function ClassA(){...}中的this.myFun() = function(){...}是为对象的实例添加属性。
例如:var aaaa = new ClassA(); aaaa.myFun();
噢~ 就是说要对直接从类调用方法必须先用call方法添加么?
function func()
{
this.myFun = function()
{
alert("x")
}
}func.call(o);
o.myFun()
//-----------------------------
var o = {};
o.func = function()
{
this.myFun = function()
{
alert("x");
}
}o.func()
o.myFun()
其实就相当于这样
call是Function的prototype中的,假如有一个function ClassA(){
this.a = function(){...}; this.b = function(){...}; this.c = function(){...}
}
如果用ClassA.call(obj),可以为obj添加多个属性