prototype和constructure区别

function fn(){this.say = function(){}}
fn.prototype.say = function(){}
这两种方式有什么区别呢,具体一点

阅读 2.2k
3 个回答

在构造函数中创建的每个方法,都要在每个实例上重新创建一遍,也就是说不同实例上的同名函数是不相等的,无法实现函数复用,而在原型上的方法是被所有实例所共享的。可以了解一下 JavaScript 中的 继承

这样理解吧 如果把say函数在fn构造函数里声明的话 所有fn的实例都会占一份say的内存 如果是通过prototype 这是占用一份内存在 fn.prototype上

公用方法可以放到原型上,这样只会占一份内存空间,不需要每个实例单独实例化出同样的方法或者属性。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题