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. Windows IO System

    Windows IO System是由一些executive components组成,这些component可以认为是ntoskrnl.exe中相对独立的一些module. 整个IO System是 ...

  2. Linux基础-文件管理

    <1>查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或者目录名称最长可以有265个字符,“ ...

  3. 为什么javaBean要有get/set方法的设计

    可以应对将来的修改,比如有一个以长度计算的项目开发好了,过段时间客户说这个项目要在美国上市,有了javaBean只要把所有以厘米计算的单位都乘以2.54转化为正确单位交给客户 public class ...

  4. vue做一个上移和下移,删除的li 功能

    效果图: 思路就是冒泡原理,把数据放到一个空数组,对其进行排序, 单选框用到的是iview . 具体实现代码: <div v-for="item in singledLists&quo ...

  5. PAT程序设计

    VS2013中自行对齐的快捷键操作: CTRL+K+F 1.定义二维数组 ]=]; 2.绝对值函数 int abs(int i) 返回整型参数i的绝对值 double cabs(struct comp ...

  6. vue - blog开发学习3

    1.添加less 和less-loader支持 npm install less less-loader --save-dev 2.新建main.less,将这个样式添加到home.vue中的cont ...

  7. DDCTF 北京地铁

    这周打了ddctf,被打成了dd 北京地铁题目给了一张北京地铁图,提示如下:Color Threshold 提示:AES ECB密钥为小写字母提示2:密钥不足位用\0补全提示3:不要光记得隐写不看图片 ...

  8. LeetCode Array Easy 26.Remove Duplicates from Sorted Array 解答及疑惑

    Description Given a sorted array nums, remove the duplicates in-place such that each element appear ...

  9. 理解Java GC日志

    idea 在vm options处加入-XX:+PrintGCDetails,可打印GC日志. public class ReferenceCountingGC { public Object ins ...

  10. 2018-2-13-win10-uwp-改变鼠标

    title author date CreateTime categories win10 uwp 改变鼠标 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...