prototype 是一个指向什么对象的指针?

在js高程书上说到:每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。

这里这句话我看不是很懂,假如这句话换一个说法该怎么说?
还有这里的特定类型指的是什么类型?

阅读 3.4k
3 个回答
在函数前面加上 new 来调用,也就是利用构造器函数产生对象的时候, 新的函数对象被赋予一个prototype
属性,它的值是一个包含constructor属性且属性值为该函数对象本身。 this.prototype =
{constructor:this},

这个 prototype属性最大的作用的就是存放继承特征,访问构造器上的原型属性和方法,也就是这里的共享属性和方法。 这里可以跟js 高程上的用途对应一下。

 // 定义一个构造器,并扩充它的原型
  var Man = function(name) {
     this.name = name;
  }
  Man.prototype.get_name = function() {
      return this.name;
   }
 // 利用 new 产生一个新的函数对象
 var myMan = new Man ("hero");
 // 访问构造器上的扩充方法
var name = myMan.get_name();

所以有一种继承方法,就是修改函数对象的prototype属性,实现继承,

再深入,就涉及到 原型链 和 Function.__proto__

prototype是函数的原型对象,当你new这个函数的话,获得一个对象,这个对象同时指向函数的原型

他这个说法确实绕,你可以不用理解这个话。这个问题也并不是你的问题title那样问的。
My analysis...
每个函数都有一个prototype属性 而不需要理解指针的什么的 你也不用去想这句话 “这个属性是一个指针,指向一个对象”,你就理解 每个函数都有一个prototype属性 这个属性是一个对象
The like this

function A(){}
A.prototype.xxx = function(){}

因为他是一个对象 所以可以给prototype添加属性和方法。
so
当我们

var b = new A();

的时候 就可以用

b.xxx()

来做一些操作了。并且假如你再继续new A()的话 他们之间也是互补影响的。
(以上的言论 并不足以结束 为什么变量b可以调用到A的原型上的方法,这里默认你知道。)

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