zoukankan      html  css  js  c++  java
  • 原型链

    1.创建对象有几种方法、

    //字面量

    var object = new Object({name:1})

    var o1 ={name:1}

    //构造函数

    var M = function(m){

    this.name =m

    }

    var o2 =  new M(3);

    //object.create方法

    var p = {name:1}

    var o4 = Object.create();

    2.原型 构造函数 实例 原型链

    对象就是一个实例

    new后面的就是一个构造函数

    构造函数可以new一个实例

    任何一个函数都可以作为构造函数

    构造函数都有属性prototype 初始化一个空对象(原型对象)

    构造器默认你声明的函数,来让原型对象知道自己是被哪个构造器构造的

    constructor函数指向的是构造函数

    实例.__proto__ === 构造函数.原型对象

    原型链

    object.prototype是原型链的顶端

    在实例中没有找到的话。会向他上一层找,一直找到object.prototype,如果还没有找到就返回未定义

     自我理解总结:

     实例是由构造函数来生成的,但是跟他不是直接挂钩的  与构造函数的属性prototype的原型对象挂钩的

    关系:实例.__proto__ === 构造函数.原型对象

    原型对象的constructor函数 === 构造函数

    构造函数都有属性prototype 是一个空对象,也就是原型对象

    原型链

    3.instanceof的原理 :识别正在处理的对象的类型

    o3是不是m的实例

    o3 instanceof m === true   //判断 o3是否是m的实例

    o3 instanceof Object === true

    o3.__proto__ === M.prototype

    M.prototype.__proto__ === Object.prototype

    o3.__proto__.constaructor === m  === true  //找到他的原型对象的constaructor 就是他的构造函数  是不是 m

    o3.__proto__.constaructor === object  === false

    构造函数也是一个对象

    constaructor比instanceof更严谨

    4.new运算符的原理

    一个对象被new  继承构造函数的原型对象foo.prototype

    构造函数被执行,this要指定新实例  new foo === new foo()

  • 相关阅读:
    opencv-活体检测
    人脸识别
    Opencv-python基本操作
    白话深度学习与Tensorflow(二)
    Linux系统入门(一)-未完成
    编程题29 题目:求对角线元素之和
    编程题28 题目 排序
    编程题27 题目:求100之内的素数
    编程题 18兵乓球比赛
    编程题21 求阶数总和
  • 原文地址:https://www.cnblogs.com/joer717/p/10677333.html
Copyright © 2011-2022 走看看