首页 > Web开发 > 详细

我理解的js原形

时间:2016-08-08 14:05:01      阅读:243      评论:0      收藏:0      [点我收藏+]

原形是javascript特有的一个‘东西‘,它可以用来实现继承。

首先,每声明一个函数,这个函数就自动会有一个prototype属性,这个属性会指向一个对象,而这个对象是就我们常说的原形对象。

foo(){

}
console.log(foo.prototype) // Object (原形对象)

而这个原形对象中最开始都有什么呢? 答案是:一个constructor和一个_proto_(稍后再说这个)。

原形对象的constructor中是一个函数,它就是 foo(){}。

接着,我们可以在原形对象里声明属性或者方法。类似这样

foo.prototype.alertMsg = ‘错误,请重试‘;
foo.prototype.add = function(x,y){
  return x+y;  
};

 

对一个普通函数来说,上面的都是其实都没什么用。

但是,当foo是一个构造函数的时候,

function foo(name){
  this.name = name  
  console.log(this)
}

foo(‘莉莉‘) //普通函数的this指向的是window对象,this.name = name就是给window对象添加了一个name属性,值就是 莉莉
foo.prototype.hello = function(){
    alert(‘hello‘);
}
var obj = new foo(‘小明‘);//通过此构造函数创建对象
console.log(obj) //obj中有一个属性name是小明,然后还有一个_proto_这个私有对象,他不能直接访问,他指向的就是foo的原形对象,所以他里面会有hello这个方法。
而当我们多次通过这个构造函数创建对象的时候,他们都会指向同一个原形对象,这样就节省了内存,也便于管理和维护

 未完待续

我理解的js原形

原文:http://www.cnblogs.com/fuzy/p/5696853.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!