答案中的构造函数是怎么调用的 javascript函数的调用模式有哪几种
答案中的构造函数是怎么调用的?
A A1调用的无参构造函数
A A2(2)调用的有参构造函数
A A3(A2)调用的复制构造函数
A1=A2.add (A3)
首先传递参数A add(A q) 调用的复制构造函数
add函数中 A temp调用的无参构造函数
return temp调用的复制构造函数
结果就是2 2=4
javascript函数的调用模式有哪几种
函数调用
   函数调用模式中this指全局对象(window)
var f1 = function() {
alert("这个是函数调用")
alert(this)
}
f1()
方法调用
由对象调用方法(当对象为null的时候,函数进行函数调用模式,当对象不为null的时候,函数实现方法调用模式)
在方法调用模式中 this 表示当前对象
var o = {name:"赵建宇"}
o.say = function() {
alert(this.name)
alert(this)
}
o.say()
构造函数
   任何一个函数放在new 后面就是构造函数,构造函数的this是构造函数返回的对象,构造函数的return发生变化,如果返回的是对象,直接返回,否则返回创建出来的对象
如
var Person = function(n) {
this.name = n
    return {sex:"男"}
   // return 123
}
var p = new Person()
函数的apply调用模式和call调用模式
 语法:
    函数名.apply(对象, [参数数组])
函数名.call(对象, 参数列表)
如
var func = function() {
this.name = "马伦"
this.say = function(){alert(this.name   "牛逼")}
}
func.apply(null)   // 等价于 func()
javascript构造函数
在这里Box就相当于一个类.
this.name、this.age是这个类的属性,this.run则是这个类的方法
this.name=name  是说的name的值给Box的name属性.
是如何调用的呢?
代码:
function Box(name, age) {//构造函数模式
this.name = name
this.age = age
this.run = function () {
 return this.name   this.age   运行中...
}
}
var boxobj=new Box("百度",15)//这个意思是 创意见Box对象boxobj并初始化name和age属性
alert(boxobj.run())//调用boxobj方法并alert出返回值 返回内容是:百度15运行中...
javascript中构造器调用模式中的this
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,自然动态的指向由构造函数所生成的对象了。