JavaScript之对于prototype和

    xiaoxiao2021-11-05  80

            学习了JavaScript,觉得有必要对函数对象的prototype属性和普通对象的_proto_属性着重理解一下。          首先,万物皆对象。而对象又可分为函数对象和普通对象,当我们去用New Function()的时候,创建的就是函数对象。除开这种情况其他的都是普通对象,就如以下例子:   //  var  f1 = function ( ) { } ; var  function  f2 ( ) { } ; var  f3 = new  Function ( 'a' , 'b' ) ; //   var  o1 = { } ; var  o2 = new  f3 ( ) ; var  o3 = new  Object ( ) ;      其中f1,f2归根结底还是用New Founction去创建的,所以是函数对象。      对于函数对象才有prototype属性,这个属性就是原型对象,这个原型对象其实就是一个普通对象(Function.prototyp除外),它没有prototype属性    function  f1 ( ) { } ; console . log ( f1 . prototype )  //f1{} console . log ( typeof  f1 . prototype )  //Object         从以上第二行代码可以看出,f1.prototype就是f1的一个实例对象 。就是在创建f1的时候,创建了他的一个实例对象并赋值给他的prototype属性,如下:     var  te = new  Function ( ) ;   Function . prototype = te ;         那么,这个属性有什么作用呢?继承作用,相当于将函数对象的公有属性放在prototype中,那么函数对象的实例会共享这些属性。   var  function  f1 ( name ) {      this . name ; } f1 . prototype . getName = function ( ) {      return  this . name ; } var  hty = new  f1 ( 'hutianyi' ) ; hty . getName ( ) ; //hutianyi        再说说_proto_属性,这个属性指向的是创建这个对象的函数对象的prototype属性,一层一层的对象继承就是以prototype为实体_proto_为连接纽带实现的。把这个有_proto_串起来的直到Object.prototype._proto_为null的链叫做原型链。            总结      1.原型和原型链是JS实现继承的一种模型。      2.原型链的形成真正是靠_proto_而非prototype 
    转载请注明原文地址: https://ju.6miu.com/read-678021.html

    最新回复(0)