• 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;阮一峰

  • 相关阅读:
    触摸屏网站开发系列(一)-ios web App应用程序(ios meta)
    jQuery Mobile 入门教程
    html的视频插件 (转)
    网页布局流式布局
    2.05-random-uesr-proxy
    2.04-proxy-handler
    2.03-handler_openner
    2.02-request_header_two
    2.01-request_header
    1.03-get_params2
  • 原文地址:https://www.cnblogs.com/Yoriluo/p/6870326.html
Copyright © 2020-2023  润新知