码迷,mamicode.com
首页 > 编程语言 > 详细

javascript的constructor简单介绍

时间:2016-01-06 14:00:16      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

javascript的constructor简单介绍:
constructor可以返回对象对创建它的构造函数的引用,例如:

var arr=[1,2,3];
console.log(arr.constructor===Array);

以上代码中的输出值是true,这说明数组对象arr的constructor属性指向它的构造函数Array。
可能上面的代码过于简单了,下面再来一点稍稍复杂的代码分析一下:

Object.prototype.webName="蚂蚁部落";
function show(){
  this.name="show函数name";
}
         
show.prototype={
  constructor:show, 
  name:"show的原型对象的name",
  msg:function(){return this.name + this.webName}
}
             
var prototypeObj=show.prototype;
console.log(prototypeObj.msg());
var obj=new prototypeObj.constructor;
console.log(obj.name);
var showObj=new show();
console.log(showObj.msg());

下面对以上代码进行一下注释:
1.Object.prototype.webName="蚂蚁部落"为Object的原型对象添加一个名为webName的属性,属性值为:蚂蚁部落。
2.function show(){this.name="show函数name"},创建一个函数,当次函数用作构造函数的时候,this就只想通过构造函数创建的对象对象实例,那么此对象实例的name属性值为:show函数name。
3.show.prototype={},将show的原型对象设置为后面的对象直接量。
4.constructor:show,将原型对象的constructor属性指向show函数。
5.name:"show的原型对象的name",属性和属性值,这个很简单就不用数了。
6.msg:function(){return this.name + this.webName},和上面一个道理,只不过是函数而已。
7.var prototypeObj=show.prototype,将show函数的原型对象的引用赋值给变量prototypeObj。
8.console.log(prototypeObj.msg()),因为prototypeObj是show的原型对象的引用,那么将会输出:show的原型对象的name蚂蚁部落,在msg,第一个this是指向原型的对象实例,第二个this也是,不过在原型对象中没有webName属性,那么将会通过原型链找到Object的原型的webName属性。
9.var obj=new prototypeObj.constructor,prototypeObj是指向show的原型对象的,也就是那个对象直接量,此对象直接量的constructor属性是指向show函数的,所以这里就是创建了一个show的对象实例。
10.console.log(obj.name),所以将会输出show函数name。
11.var showObj=new show(),创建一个show的对象实例。
12.console.log(showObj.msg()),msg函数中的this是指向show的对象实例,尽管在原型对象中也有name属性,但是对象本身的优先级要高,第二个this自然也是指向show的对象实例,依然通过原型链找到:蚂蚁部落,所以输出结果为:show函数name蚂蚁部落

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=9185

更多内容可以参阅:http://www.softwhy.com/javascript/

javascript的constructor简单介绍

标签:

原文地址:http://www.cnblogs.com/nulifendou/p/5105063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!