zoukankan      html  css  js  c++  java
  • 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);    

  • 相关阅读:
    关于 “支持“XXXDBContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库” 的解决办法
    ASP.NET MVC 添加Model并连接到本地数据库
    C#中的if if...和if-else if
    Git和Github的使用教程
    JavaEE和Tomcat环境
    将windows系统新建的文本文档默认编码为UTF-8
    WIN10缺少.NET Framework3.5解决办法
    上传图片预览设置src不显示
    IOS new Date() 时间转换失败问题以及其他问题
    是否支持css3
  • 原文地址:https://www.cnblogs.com/hacker-caomei/p/14134200.html
Copyright © 2011-2022 走看看