Js之原型链
    1、object 与 Object
        1、object是类型,表示对象类型
        2、Object是函数
    2、js成员的访问规则
        o.方法()或o.属性
        首先在o当前这个类型中寻找改成员的定义,如果存在该成员的定义
        那么就直接使用该成员
        如果该成员不再当前类型中,就访问其原型(原型链中的上一级),
    3、__proto__属性
        1、IE8之前
            如果需要原型,那么就一定要有函数(构造函数)
        2、火狐谷歌和IE8以后
            每一个对象都有一个属性叫 __proto__
             这个属性就是这个对象的原型
            alert(o.__proto__);
    4、原型链
        1、原型的特征
            对象有原型,原型也是对象,原型也有原型
             所有的对象都来自于Object的prototype属性指向的对象
             所有的函数都来自于Function的原型(因为Function的原型等于Function的prototype属性)
        2、对原型链的解释
            1、总体描述
                个人感觉对象如同基因,函数如同基因的载体,所以函数创建的对象的原型为函数的prototype属性(基因)
            2、__protp__
                 __proto__属性表示当前对象或函数的原型
                所以对象的__proto__属性为对象,最终指向Object.prototype
                函数的__proto__属性为函数,最终指向Function.prototype(这是一个函数,也是对象)
            3、prototype
                1、对象的prototype
                     prototype属性表示表示当前函数创建出来的对象的原型。
                    所以对象没有这个属性,而是有constructor
                        这个属性表示prototype为自己的函数
                        若果一个函数或对象没有被函数的prototype指向自己,那么这个属性就到自己的原型中去找
                    函数的prototype最终指向Object.prototype
                2、函数的prototype
                    1、Function
                        因为Function函数创建出来的对象还是函数类型(函数也是对象)
                        所以Function的__proto__属性和prototype属性都指向Function.prototype
                    2、Function.prototype
                        Function.prototype是Function创建出来的(constructor指向Function)
                        所以也是函数
                        在这里解释为对象(如果解释为函数就自己指向自己了,但是不能这样)
                        所以__proto__指向Object.prototype
                3、Object.prototype
                    Object.prototype是对象
                    但是__proto__不能指向自己啊,所以就是null了

JavaScript原型链分析的更多相关文章

  1. 浅谈系列之 javascript原型与对象

    在我学习与使用javascript三个月中,我一直对javascript的继承关系以及prototype理解不清,导致很多时候为什么这么用说不出个所以然来.截止到本周为止,通过之前的学习以及自己的再学 ...

  2. JavaScript原型OOP——你上车了吗?

    .title-bar { width: 80%; height: 35px; padding-left: 35px; color: white; line-height: 35px; font-siz ...

  3. 深入理解javascript原型和闭包 (转)

    该教程绕开了javascript的一些基本的语法知识,直接讲解javascript中最难理解的两个部分,也是和其他主流面向对象语言区别最大的两个部分--原型和闭包,当然,肯定少不了原型链和作用域链.帮 ...

  4. 深入理解javascript原型和闭包系列

    从下面目录中可以看到,本系列有16篇文章,外加两篇后补的,一共18篇文章.写了半个月,从9月17号开始写的.每篇文章更新时,读者的反馈还是可以的,虽然不至于上头条,但是也算是中规中矩,有看的人,也有评 ...

  5. 深入理解javascript原型和闭包(1)——一切都是对象

    “一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的函数——typeof().typeo ...

  6. 深入理解javascript原型和闭包(2)——函数和对象的关系

    上文(理解javascript原型和作用域系列(1)——一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断. var fn = function () { }; co ...

  7. 深入理解javascript原型和闭包(3)——prototype原型

    既typeof之后的另一位老朋友! prototype也是我们的老朋友,即使不了解的人,也应该都听过它的大名.如果它还是您的新朋友,我估计您也是javascript的新朋友. 在咱们的第一节(深入理解 ...

  8. 深入理解javascript原型和闭包(4)——隐式原型

    注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看<javascript高级程序设计(第三版)>第6章:面向对象的程序设计. 上节已经提到 ...

  9. 深入理解javascript原型和闭包(5)——instanceof

    又介绍一个老朋友——instanceof. 对于值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/ ...

随机推荐

  1. Yeoman 官网教学案例:使用 Yeoman 构建 WebApp

    STEP 1:设置开发环境 与yeoman的所有交互都是通过命令行.Mac系统使用terminal.app,Linux系统使用shell,windows系统可以使用cmder/PowerShell/c ...

  2. 带你实现开发者头条APP(三) 首页实现

    title: 带你实现开发者头条APP(三) 首页实现 tags: 轮播广告,ViewPager切换,圆形图片 grammar_cjkRuby: true --- 一.前言 今天实现开发者头条APP的 ...

  3. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  4. C#中如何在Excel工作表创建混合型图表

    在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...

  5. 【夯实PHP基础】nginx php-fpm 输出php错误日志

    本文地址 原文地址 分享提纲: 1.概述 2.解决办法(解决nginx下php-fpm不记录php错误日志) 1. 概述 nginx是一个web服务器,因此nginx的access日志只有对访问页面的 ...

  6. Android中访问sdcard路径的几种方式

    以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...

  7. iOS微信第三方登录实现

    iOS微信第三方登录实现   一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统.在进行微信OAuth2.0授权登录接入之前,在微信开 ...

  8. 初识npm

    一.npm简介: npm全称为Node Package Manager,是一个基于Node.js的包管理器,也是整个Node.js社区最流行.支持的第三方模块最多的包管理器. npm的初衷:JavaS ...

  9. jquery.multiselect 多选下拉框实现

    第一步:链接下列文件,如果没有,到此网页下载 https://github.com/ehynds/jquery-ui-multiselect-widget,此插件基于jquery ,所以jquery的 ...

  10. Oracle常用SQL函数整理

    --返回ASCII码select  ASCII('A') "A的ASCII码" ,ASCII('a') "a的ASSCII码" from dual ; --反向 ...