码迷,mamicode.com
首页 > Web开发 > 详细

我理解的js原形

时间:2016-08-08 14:06:52      阅读:118      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!