• js原型和原型链


     js中最重要的两条链作用域链和原型链,作用域链是从上往下,原型链是从下往上。

     1.原型是什么

      1)原型就是一个属性,是构造函数属性,是构造函数制造出来的对象的公共祖先,后面所有对象都会继承原型的属性和方法。

      2)原型也是一个对象,所有实例对象需要共享的属性和方法都会存放在这个对象里面,不需要共享的就放在构造函数里面。

      3)在默认情况下,所有原型对象都会自动获得一个constructor属性,这个属性指向prototype属性所在函数。

    即 Person.prototype.constructor == Person。

     2.prototype和__proto__

      __prototype__ 用来查看原型,是对象的属性,可以查看但是不能修改。

      prototype用来修改原型。

      每个对象都有__proto__属性,但只有函数对象才有prototype属性

     3.任何对象的最终原型都是Object.prototype。

     4.原型链:在JavaScript中每个对象都有一个指向他的原型内部对象的内部链接,每个原型对象又有自己的原型,直到某个对象的原型为null为止,组成这条链的最后一环。

     5.原型对象的作用:原型对象主要作用主要是用于继承。

     6.__proto__ JS在创建对象的时候,都有一个叫做__proto__的内置对象属性,用于指向创建它的构造函数的原型对象。

     7.

    <script>
        //先定义一个构造函数
        function Person(config){
            this.name = config.name;
            this.age = config.age;
            this.sex = function(){
                if (config.sex == 2) {
                    return "女"
                }else{
                    return "男"
                }
            }
        }
        var obj = {
            name : "wang",
            age : 16,
            sex : 2,
        }
        var person1 = new Person(obj);
        console.log(person1)
        console.log(Person.prototype.constructor)//出来的是构造函数Person
        console.log(person1.__proto__)//person1__proto__  和Person.prototype 是一样的
        console.log(Person.prototype)
        console.log(person1.constructor)//构造函数Person
        // Person.prototype.constructor == Person;
        // person1.__proto__ == Person.prototype;
        // person1.constructor == Person;
      // Person.prototype.__proto__ === Object.prototype
      // Object.prototype.__proto__ === null
    </script>

    Object.prototype也有proto属性,但是null。因为处于原型链的顶端。

    8.所有的函数构造器也都是一个普通JS独享,可以给构造器添加或者删除属性等。同时也继承了Object.prototype上的所有方法。

      

  • 相关阅读:
    qemu-kvm磁盘读写的缓冲(cache)的五种模式
    关于追踪qemu 源码函数路径的一个方法
    准备升大三啦
    关于Vim的一个配置文件
    POJ 3253
    hihocoder 第二十五周 spfa 最短路
    POJ 2718 穷举
    《鸟哥Linux私房菜基础学习篇》命令索引
    博文流
    《SDN核心技术剖析和实战指南》3.3读书笔记
  • 原文地址:https://www.cnblogs.com/wangzheng98/p/11191714.html
Copyright © 2020-2023  润新知