javascript中构造器调用模式中的this

2025-06-28 03:46:42
推荐回答(1个)
回答1:

1:

构造函数的运作可以这样理解:
如您的这个代码

var Quo = function(){ this.a= 0; };
var MyQuo = new.Quo();
其中的new 运算符,先产生了一个空对象{},然后生成一个this指针,将this指针指向这个空对象;运行构造函数时,就相当于“{}.a=0”一样的为这个对象动态添加属性。最后将这个生成好的对象付给MyQuo.
2:this的意义,就是动态的指向当前代码所属的对象。
function(){ return this.a; };
如果不用new运算符,单单的运行这个函数Quo,就会为window添加一个属性a=0,因为这段代码运行的时候,没有所属对象,默认就归给window了。如果用了new,this就指代生成的对象了。
静态的this,很难说指向了谁,这需要看代码的运行上下文。
3:prototype的本质是一个对象, 是属于构造函数的属性。对它的理解,就是用此构造函数生成的对象共享prototype对象,如果有相同的属性,则覆盖。
var Quo = function(){ this.a= 0; };
Quo.prototype.get_status = function(){ return this.a; };

var MyQuo = new.Quo();
最后的MyQuo有两个属性,MyQuo.a属性,是由构造函数动态添加的。MyQuo.get_status属性,是从构造函数的原型prototype 继承得到的
原型中的this,自然动态的指向由构造函数所生成的对象了。