前言: 

下面两行代码都是创建一个数组对象myArray:
var myArray=[];
//等价于
var myArray=new Array();
同样,下面的两段代码也都是创建一个函数myFunction:
function myFunction(a,b){
      return a+b;
}
//等价于
var myFunction=new Function("a","b","return a+b");

所以创建一个函数的方法相当于new了一个Function,而prototype 是Function的方法体。

 

 

prototype 对象是实现面向对象的一个重要机制。每个函数(function)其实也是一个对象,它们对应的类是“Function”,但它们身份特殊,每个函数对象都具有一个子对象prototype。即prototype表示了该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过 new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。
既然prototype是一个对象,可以使用前面两节介绍的方法对其进行动态的修改,这里先给出一个简单的例子:

//-------------------------------js代码-----------------

function User(){
       //类成员的定义及构造函数
}

//-------------------------------html页面代码-------------------------------

 

<script type="text/javascript" src="demo01.js"></script>
<script type="text/javascript">
//-----------------知识点一-----------------
User.prototype.name ='tom';//创建User类的同时便相当于创建了一Function类的实例,

此处之所以可以调用prototype子对象是因为:User类的创建实质上是:var myFunction=new Function("a","b","return a+b");

,而prototype是函数Function的子对象。


  User.prototype.say = function (){
  console.log("hello - ")
}
var user = new User();

console.log(user['say']());

</script>

 

相关文章:

  • 2021-10-30
  • 2021-12-17
  • 2021-09-16
  • 2022-12-23
  • 2021-05-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-15
  • 2021-06-16
  • 2022-01-20
  • 2022-01-04
  • 2022-01-13
  • 2022-12-23
  • 2021-12-14
相关资源
相似解决方案