zoukankan      html  css  js  c++  java
  • js原型和原型链理解 constructor 构造函数

    一.对象:普通对象   函数对象

    二.构造函数特点:1.需要new实例化,内部使用this对象指向即将要生成的实例对象  2.首字母大写,用于区分普通函数

    function Person(name){
        this.name=name
    }
    var person1=new Person('xiaohong')
    var person2=new Person('lili')

    person1.constructor=Person   constructor指向构造函数,Person的内置属性 Person.prototype(函数对象),每个原型对象都有一个constructor属性,指向prototype属性所在的函数Person

    即person1.constructor=person2.constructor=Person.prototype.constructor

    通过原型实现继承

    三.__proto__,每个对象都有这个属性指向创建他的构造函数的原型即person1.__proto__=Person.prototype

    //var obj={}
    var obj=new Object();
    obj.constructor===Object
    obj.__proto__===Object.prototype

    person1.__proto__是Person.prototype

    Person.__proto__是Person是构造函数,Function,即Function.prototype

    Person.prototype._proto__是  Person.prototype是原型对象,Object,即Object.prototype

    Object.__proto__是 Objext是构造行数Function 即Function.prototype

    Object.prototype.__ptoto__是 Object.prototype的原型对象的__proto__指向构造函数的prototype,处于顶层是null

    四。Math和Json是以对象存在的 即Math.__proto__===Object.prototype

    五。Function.prototype是唯一一个typeof Function.prototype是function的prototype,其他构造器的prototype都是object

    六。注意constructor的指向例如

    function Animal(){
    
    }
    Animal.prototype.age='20'
    
    function Cat(name,color){
        this.name = name
        this.color = color
        this.name2 = '11112222'
    }
    Cat.prototype = new Animal();
    Cat.prototype.type="猫"
    Cat.prototype.eat=function(){
        console.log('爱吃鱼')
    }
    function Dog(name){
        this.name=name
    }
    Dog.prototype = new Animal();
    Dog.prototype={
        getName:function(){
            console.log('gougou')
        }
    }

    Cat.prototype.constructor === Animal   Dog.prototype.constructor===Object 两者不相同,后者是重写Animal.prototype,前者是修改。

    七。

    • 原型和原型链是JS实现继承的一种模型。
    • 原型链的形成是真正是靠__proto__ 而非prototype
    人是在一天天内提高的,只有不断努力才不会被淘汰!
  • 相关阅读:
    CF1051F The Shortest Statement 题解
    CF819B Mister B and PR Shifts 题解
    HDU3686 Traffic Real Time Query System 题解
    HDU 5969 最大的位或 题解
    P3295 萌萌哒 题解
    BZOJ1854 连续攻击游戏 题解
    使用Python编写的对拍程序
    CF796C Bank Hacking 题解
    BZOJ2200 道路与航线 题解
    USACO07NOV Cow Relays G 题解
  • 原文地址:https://www.cnblogs.com/bais/p/9068928.html
Copyright © 2011-2022 走看看