• JS原型,原型链(草稿)


     自己探索一下原型链。草稿

    在学习对象和函数的时候,一直傻傻分不清他们的关系。此文搞懂原型和原型链的知识点

    先说一下js的类型。

    基本数据类型:number,string,null,undefined,bool。

    引用数据类型:Object(对象),Function,Array,Data。

    这个object就很奇怪嗷。为什么能被称为引用数据类型呢?

    一 对象。

    创造对象的方法有两种。一个是new,一个字面量{}。两个效果相等。

    var obj = new Object();

    var obj2 = obj1;

    obj2.name = '我有名字了';

    console.log(obj1.name)//我有名字了。

    (基本数据结构类型在栈中,而引用数据类型保存在堆中。但是JS语言不能直接在堆中进行操作,只能通过引用地址找到保存在堆中的对象。)

    obj1,obj2这是我们通过new进行创建的对象。

    这里有两个问题。

    1 new创建对象过程中发生了什么?

    2 创造出的对象obj1,obj2有什么属性?

    我们打开控制台先回答第二点。

    除了name的属性以外,还有_proto_属性,photo是照片,proto是什么意思?嗷,原来是原型的意思。

    我们把name属性删掉,这个时候打开控制台再看。怎么还有proto呢?我们先保留这个问题。

    函数的属性prototype里面还有proto。并且和对象的proto一摸一样。

       

    二 函数

    function sayName(a) {

        name = '我有名字了';
    return name;
    }

    sayName函数里面除了name属性,还有prototype属性,还有constructor,以及__proto__。这个属性是什么东东呢?
    1 console.log(sayName.constructor);

        2 console.log(sayName.__proto__);

     

    3  上面的乏善可陈,我们看看prototype。我天,prototype属性里面怎么还有proto和constructor呢。
    3.1 console.log(sayName.prototype)

    我们先看一下constructor。里面还有prototype以及proto。

    这个时候我们先看一下 :

    3.11console.log(sayName.prototype.constructor)(等价于 :console.log(sayName);)

    明白了 prototype属性里面有constructor,会指向回来的值。我们在后面再加.prototype.constructor,会指向回来!!!

     函数有一个属性 叫property。

    property有一个constructor,指向函数。

    我们再看constructor里面有什么?

    3.12 console.log(sayName.prototype.constructor.protype.constructor)等价于 :console.log(sayName);

    这个就到此一段停止了!!!我们看看prototype的__proto__;

    3.2 console.log(sayName.prototype.__proto__);

    这个里面还有constructor,是不是也是指向回去的呢?控制台看一下竟然不是!!!!

    console.log(sayName.prototype.__proto__.constructor);

    console.log(sayName.prototype.__proto__.prototype);    

  • 相关阅读:
    PAT (Advanced Level) 1060. Are They Equal (25)
    PAT (Advanced Level) 1059. Prime Factors (25)
    PAT (Advanced Level) 1058. A+B in Hogwarts (20)
    PAT (Advanced Level) 1057. Stack (30)
    PAT (Advanced Level) 1056. Mice and Rice (25)
    PAT (Advanced Level) 1055. The World's Richest (25)
    PAT (Advanced Level) 1054. The Dominant Color (20)
    PAT (Advanced Level) 1053. Path of Equal Weight (30)
    PAT (Advanced Level) 1052. Linked List Sorting (25)
    PAT (Advanced Level) 1051. Pop Sequence (25)
  • 原文地址:https://www.cnblogs.com/hacker-caomei/p/14134200.html
Copyright © 2020-2023  润新知