1. //1.几乎所有函数都有prototype属性,这个是个指针,指向原型对象;Function.prototype这个没有
  2. //2.所有对象中都有__proto__属性.(Object.prototype该属性的值为null)
  3. //几乎所有函数都有 prototype/__proto__属性
  4. //3.函数都是Function的实例(函数是通过Function创建出来的对象)
  5. //自定义函数,Function,Array,RegExp,String,Boolean,Number,Object都是函数,都是通过Function创建出来的
  6. //4.几乎所有函数都继承自:Function.prototype
  7. //函数.__proto__===Function.prototype(除了Function.prototype本身,他没有prototype属性)
  8. //Object.__proto__===Function.prototype
  9. //Function.__proto__===Function.prototype
  10. //5.String.prototype.__proto__===Object.prototype
  11. // Array.prototype.__proto__===Object.prototype
  12. // Number.prototype.__proto__===Object.prototype
  13. // RegExp.prototype.__proto__===Object.prototype
  14. // Function.prototype.__proto__===Object.prototype
 
 //构造函数  普通函数  只在于调用方式不同
//=>当成普通函数来调用
//1.,函数内部的this指向调用的对象(如果没有找到调用的对象,this指向window)
//2.函数的返回值由return语句决定,如果没有说明函数没有返回值(返回值是undefined)
var  p1 =Person("历程");
//=>当成构造函数来调用
//1.创建一个该构造函数的实例
//2.将构造函数内部this的值指向该实例
//3.执行函数体
//4.默认的函数值,该实例
  1. function fn(){
  2. returnthis;
  3. }
  4. var f3=new fn();
  5. console.log(f3);//fn
  6. //return {name:"张三"};
  7. //此时构造函数的返回值是一个对象就不再使用默认的返回值了,返回值就是当前的对象
  8. function fn2(){}
  9. var f2 =new fn2();
  10. console.log(fn2);//fn2的实例
  11. //如果没有返回值,会是默认的返回值
  12. //如果返回值是基本数据类型的话,还是会使用默认的返回值
 
var p2 = new Person("范冰冰")
 
//函数  对象在内存中的存储特点
//Object也是一个函数
//结合对象与函数的的内存结构图完整进行理解
//为什么Function.prototype是个函数呢?
//Function与Function.prototype之间的关系
 
  1. function fn(){}
  2. console.log(fn.constructor);//Function
  3. console.log(fn.__proto__===Function.prototype);//true
  4. console.log(Object.__proto__===Function.prototype);//true
  5. console.log(Function.prototype===fn.__proto__);//true
  6. console.log(Object.constructor);// Function
  7. console.log(fn.prototype.constructor);//fn
  8. console.log(Function.prototype.__proto__.constructor);// Object
 

 
 
 
 
 
  1. var arr=["hello","say","pic"];
  2. var str3;//undefined
  3. for(var i=0;i<arr.length;i++){
  4. str3+=arr[i];//如果一个变量str3声明了没有赋值会有默认的值undefined如果参与运算的话就会出问题
  5. //所以以后再声明变量之后要给初始化的值
  6. }
  7. console.log(str3);//undefinedhellosaypic
  8. console.log(undefined+"abc");//变为一个字符串undefined abc
 

prototype.原型链.原型链图的更多相关文章

  1. javascript原型与原型链,prototype、__proto__、constructor

    javascript通过构造函数(constructor)和原型链来(prototype chain)实现其他面向对象语言的类概念.ES6语法中引入了“类”(class)的概念,但只是一个语法糖,只是 ...

  2. js原型和原型链,以及__proto__、prototype属性

    __proto__和prototype属性: 1.__proto__属性: 在JS里,万物皆对象(函数是对象.原型也是对象...).对象都具有属性__proto__,这个属性会指向该对象的原型. 2. ...

  3. 一张图弄懂js原型和原型链

    前言 JavaScript的原型和原型链是面试的时候经常被问及到的问题,考察了我们对JavaScript的基础掌握情况,今天我们在这里用一张图来梳理下其中的知识点. 下面我来引入这张非常经典的图,我也 ...

  4. 275 原型与原型链:显式原型prototype ,隐式原型__proto__,隐式原型链,原型链_属性问题,给原型对象添加属性/方法

    1.所有函数都有一个特别的属性 prototype : 显式原型属性 [普通构造函数的实例对象没有prototype 属性,构造函数有__proto__属性,原型对象有__proto__属性 ] 2. ...

  5. 继承:《原型和原型链(prototype 属性使您有能力向对象添加属性和方法。)》

    二. 原型对象   在JavaScript 中,每当定义一个对象(函数)时候,对象中都会包含一些预定义的属性.其中函数对象的一个属性就是原型对象 prototype.注:普通对象没有prototype ...

  6. 原型及原型链,以及prototype和__proto__属性(笔记便于以后复习)

    首先,js的数据结构有 原始类型(5种):Boolean.Number.String.Null.Underfined, 然后是引用类型:Array.Date.Error.RegExp.Function ...

  7. 你不知道的JavaScript--Item15 prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  8. JavaScript prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  9. JS prototype chaining(原型链)整理中······

    初学原型链整理 构造器(constructor).原型(prototype).实例(instance); 每一个构造器都有一个prototype对象,这个prototype对象有一个指针指向该构造器: ...

  10. Object.prototype 原型和原型链

    Object.prototype 原型和原型链 原型 Javascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法,有些属性是隐藏的.换句话说,在对象创建 ...

随机推荐

  1. tomcat7以下线程控制

    web server允许的最大线程连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右. 1.编辑tomcat安装目录下的conf目录下的server. ...

  2. eclipse run error:g++ not found in Path

    网上有人说: 在eclipse下 windows-->Preference-->C/C++-->Build-->Setting然后选择Discovery标签,将里面的内容全部R ...

  3. quartz的初步总结及配置优化

    1.scheduler 1. Scheduler就是Quartz的大脑,所有任务都是由它来设施.Scheduler包含一个两个重要组件: JobStore和ThreadPool.JobStore是会来 ...

  4. 百度之星资格赛2018B题-子串查询

    子串查询 题目 度度熊的字符串课堂开始了!要以像度度熊一样的天才为目标,努力奋斗哦! 为了检验你是否具备不听课的资质,度度熊准备了一个只包含大写英文字母的字符串 A[1,n]=a1a2⋯an,接下来他 ...

  5. Python List reverse() 与list[::-1]

    reverse() https://www.runoob.com/python/att-list-reverse.html list[::-1] https://blog.csdn.net/usern ...

  6. jQuery选择器我犯的错误(原创)

    jQuery的选择器十分强大,但是在使用jQuery选择器的时候一定要十分小心,空格.冒号.引号到处都是坑,老手也不能避免,只能勤加练习,熟能生巧,掌握规律,为了练习,凡是到选择器的地方我都自己先敲, ...

  7. nutch1.9 + solr4.72

    solr.server.url : URL of the SOLR instance (mandatory) solr.commit.size : buffer size when sending t ...

  8. 使用Pandas读取大型Excel文件

    import os import pandas as pd HERE = os.path.abspath(os.path.dirname(__file__)) DATA_DIR = os.path.a ...

  9. Python - 元组 , range

    元组和元组嵌套 元组: 俗称不可变的列表.又被成为只读列表, 元组也是python的基本数据类型之一, 用小括号括起来, 里面可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是 ...

  10. Linux部分常用命令详解(一)

    echo 命令详解 格式: echo string 显示普通字符: echo "it is a test" 或者 echo it is a test 显示转义字符: echo &q ...