文章导航

JavaScript 构造函数

2018-2-24 00:34| 发布者: antzone| 查看: 1584| 评论: 0|来自: 蚂蚁部落

通过new关键字调用的函数就可以被认为是构造函数。

构造函数内的this指向新创建的对象实例,这个对象实例继承构造函数prototype属性指向的对象。

代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
function antzone(){
  this.webName="蚂蚁部落";
}
antzone.prototype.show=function(){
  console.log("蚂蚁部落欢迎您");
}
var oantzone=new antzone();
oantzone.show();

antzone被用作构造函数,创建了一个对象实例oantzone,this会指向oantzone,并且继承了构造函数的prototype指向的对象。构造函数的作用大体就是如此,但是还是有需要注意的地方,下面做一下简单介绍:

(1).构造函数没有return:

如果没有return,那么构造函数的返回值就是this指向的对象

(2).构造函数有return:

如果return语句返回的不是一个对象,那么构造函数的返回值和没有return语句是一样的。

当return返回一个对象时,那么构造函数的返回值就是这个return语句的返回值,代码如下:

[JavaScript] 纯文本查看 复制代码运行代码
function antzone(){
  this.webName="蚂蚁部落";
  return {
    age:2,
    address:"青岛市南区"
  }
}
antzone.prototype.show=function(){
  console.log("蚂蚁部落欢迎您");
}
var obj=new antzone();
console.log(obj.constructor===antzone);
console.log(obj.age);

以上代码的运行结果可以看出,return如果返回一个对象,那么构造函数就返回这个对象。如果想得到构造函数创建的对象实例,可以将代码改造如下:

[JavaScript] 纯文本查看 复制代码运行代码
var oantzone;
function antzone(){
  this.webName="蚂蚁部落";
  oantzone=this;
  return {
    age:2,
    address:"青岛市南区"
  }
   
}
antzone.prototype.show=function(){
  console.log("蚂蚁部落欢迎您");
}
var obj=new antzone();
console.log(oantzone.constructor===antzone);

this指向构造函数创建对象实例这一点是不变的,所以将this引用赋值给一个全局变量即可得到相应的对象实例。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部