关于javascript原型

请问

function A(){
  this.v='a'
  this.getVar = function(){
   console.log(this.v)
  }
 }

function A(){
  this.v='a'
 }
A.prototype.getVar = function(){
    console.log(this.v)
}

有什么区别
主要是 绑定在原型上的方法 和 写在构造函数内的方法什么却别?

阅读 3.2k
4 个回答

通过原型法分配的函数是所有对象共享的.
通过原型法分配的属性是独立.(如果你不修改属性,他们就是共享的)
建议:如果我们希望所有的对象使用同一一个函数,最好使用原型法添加函数,这样比较节省内存.

写在构造函数里的属性,每个对象实例都会复制一份(所以比较占内存),修改该属性不会影响其他实例;
写在原型链上是共享的,如果修改,会影响其他实例,所以一般是在实例上重写一个同名方法覆盖原型上的,而不是去修改原型方法。

上面几位童鞋都讲的差不多了,就是两点:
1. 构造函数耗内存;
2. 原型把公有的抽出来,共享了,所以就省内存了。
附上一个简单易懂的例子http://www.cnblogs.com/xfdmb/...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题