美文网首页
JS概念整理

JS概念整理

作者: Johnny是我啊 | 来源:发表于2017-07-11 16:29 被阅读0次

    _proto_ 和 prototype 的区别

    任何对象有一个 [prototype] 属性 (隐藏属性), 指向对象原型。


    1. __proto__ 是每个对象都有的属性, prototype 是函数才有的属性。
    2. __proto__指向的是当前对象的原型对象,prototype指向的以当前函数作为构造函数构造出来的对象的原型对象。
    对象字面量构造的对象

    [prototype] 指向Object.prototype

    new操作符构造的对象

    [prototype] 指向构造函数的prototype (每个函数都有一个prototype属性,所指向对象带有constructor属性)。

    函数Object.create构造的对象
    var person = {
      name : "xxx",
      sex : "male"
    }
    
    // Person2的[prototype]指向对象person
    var person2 = Object.create(person);
    
    Object.create =  function(p){
      function f(){}
      f.prototype = p;
      return new f();
    }
    

    [prototype] 本身是一个隐藏的属性,很多浏览器给每一个对象提供了 _proto_ 这一属性。

    万物皆对象, Function是对象, Function.prototype是对象, 都具有对象的共同特点——有_proto_属性。

    Function 特有属性 prototype,指向一个对象(原型对象)

    相关文章

      网友评论

          本文标题:JS概念整理

          本文链接:https://www.haomeiwen.com/subject/ofbbcxtx.html