zoukankan      html  css  js  c++  java
  • JavaScript构造函数、继承的理解

    前两天稍微深入一点点理解了原型和原型链,然后就开始有挺多疑问的;

    function dog() {
       this.name = "huahua";
    }
    var  cat = new dog();
    console.log(cat.name); //huahua
    

    按照原型链继承,cat是dog的实例,cat会继承dog的原型对象的属性才对,为什么cat.name又能继承dog的属性呢?

    经过简单的百度,这个问题还是解决了的,我们需要分析一下构造函数实例化的过程是如何的:

    1、创建一个空的cat对象;

    2、cat.__proto__ = dog.prototype;

    3、dog.call(cat);

    4、return cat;

    关键在于第三步,将dog的this指向了cat,因此cat.name为huahua;

    说到这里顺便总结一下this的内容,共四种情况:

    1、一般函数中this指向全局对象;

    2、作为对象的方法时,函数内部的this指向该对象;

    3、作为构造函数,this指向new的实例对象;

    4、apply和call时,this指向参数对象;

    javascript定义类的方法:http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html;阮一峰

  • 相关阅读:
    第二次冲刺阶段第四天
    第二次冲刺阶段第三天
    第二次冲刺阶段第二天
    人月神话阅读笔记03
    第二次冲刺阶段第一天
    学习进度条(十二)
    课堂练习-找水王
    学习进度条(十一)
    学习进度表第十周
    构建之法阅读笔记06
  • 原文地址:https://www.cnblogs.com/Yoriluo/p/6870326.html
Copyright © 2011-2022 走看看