prototype.原型链.原型链图

  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

来自为知笔记(Wiz)

时间: 2024-08-07 04:06:21

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

javascript原型、原型链神图

理解下面的神图,理解js原型.原型链 1.每个对象都有自己的原型对象,每个对象都有一个prototype属性,该属性是一个指针,指向该对象的原型对象,原型对象中存放了一堆特定类型的实例所共享的属性和方法,原型对象也有自己的原型对象. 2.当自定义构造函数时,其原型对象会取得constructor属性,该属性指向该自定义函数. 3.由构造函数创建的实例内部有一个指针[[Prototype]],指向构造函数的原型对象,__proto__是一个非标准的但许多浏览器都实现的属性,通过它可以查看原型对象.

JavaScript对象、原型、原型链知识总结思维导图

这个思维导图是我对Object,原型,原型链等知识的总结,主要参考高程一书第六章,写完才发现这么多,以后可能会进行精简.内容可能会出现差错,欢迎批评指正.下载==>Github ECMAScript支持面向对象(OO)编程,但不使用类或者接口.对象可以在代码执行过程中创建和增强,因此具有动态性而非严格定义的实体.在没有类的情况下,可以采用下列模式创建对象. 工厂模式,使用简单的函数创建对象,为对象添加属性和方法,然后返回对象.这个模式后来被构造函数模式所取代. 构造函数模式,可以创建自定义引用类

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

用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱. 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和

javascript的oop——&gt;&gt;&gt; [__proto__ 与 prototype/原型链/原型属性与原型方法/for-in循环]

  前  言  OOP  javascript的oop中的__proto__  与  prototype/原型链/原型属性与原型方法/for-in循环 1  __proto__  与  prototype/原型链   1.prototype(函数的原型):函数才有prototype.prototype是一个对象,指向了当前构造函数的引用地址呢.                       2.__proto__(对象的原型对象):所有对象都要__proto__属性.当用构造函数实例化(new)一

JavaScript学习--Item15 prototype原型和原型链详解

用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱. 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和

JS原型与原型链终极讲解

function Person () { this.name = 'John'; } var person = new Person(); Person.prototype.say = function() { console.log('Hello,' + this.name); }; person.say();//Hello,John 上述代码非常简单,Person原型对象定义了公共的say方法,虽然此举在构造实例之后出现,但因为原型方法在调用之前已经声明,因此之后的每个实例将都拥有该方法.从

JS原型与原型链终极详解 (转载)

这篇文章需要认认真真仔仔细细的看才能看懂 一. 普通对象与函数对象  JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object ,Function 是JS自带的函数对象.下面举例说明 function f1(){}; var f2 = function(){}; var f3 = new Function('str','console.log(str)'); var o3 = new f1(); var o1 = {}; var o2 =new Object

js原型与原型链

一.prototype与__proto__ 1.prototype(显式原型):每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象.它只存在于函数里,例如下面的例子中: function Person(name) { this.name = name; this.showMe = function() { alert(this.name); } }; Person.prototype.from = function() { alert('I come fro

Javascript 原型和原型链

先来了解一下Javascript中的原型:”原型也是一个对象,原型可以用来实现继承...“ 对于 原型,构造函数,以及实例之间的关系:“每个(构造)函数都有一个原型属性,原型对象都包含一个指向构造函数的指针,每个实例都包含一个指向原型对象的指针.” 举个例子: 1 function Student(name) { 2 this.name = name; 3 } 4 var stu = new Student("xiao ming"); Student 函数有个prototype的属性,

JS原型与原型链终极详解

一. 普通对象与函数对象  JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object ,Function 是JS自带的函数对象.下面举例说明 function f1(){}; var f2 = function(){}; var f3 = new Function('str','console.log(str)'); var o3 = new f1(); var o1 = {}; var o2 =new Object(); console.log(typeo