<script>    //普通对象与函数对象,js万物皆是对象    //自带的  function a1() {        function f1() {}    var f2=function () {}    var f3=new Function('str','console.log(str)');    var o3=new f1();    var ol={};    var o2=new Object();

    console.log(typeof Object);//function    console.log(typeof Function);//function    console.log(ol);//object{}    console.log(typeof o2);//object    console.log(typeof o3);//object    console.log(typeof f1);//function    console.log(typeof f2);//function    console.log(typeof f3);//function  }    //原型对象    function b1() {    }    function b2 () {        console.log(b1.prototype);//b1 {}    console.log( typeof  b1.prototype);//object    console.log(typeof Function.prototype);//function(特殊情况)    console.log(typeof  Object.prototype);//object    console.log(typeof Function.prototype.prototype);//undefined    }   //原型作用:继承    var p1=function (name) {        this.names=name;    };    p1.prototype.getM1=function () {        return this.names    };    var name1=new p1();    name1.getM1();    //例子:原型链    console.log(name1.__proto__===p1.prototype);//true    console.log(p1.prototype.__proto__===Object.prototype);//true    console.log(name1.__proto__===Object.prototype);//false    console.log(Object.prototype.__proto__);//null  最大的objct指向的是就是null,这样就表示是原型链    //疑点说明    console.log(Object.__proto__===Function.prototype);//true    //Object它是函数对象,而且是指向Function的    console.log(Function.__proto__===Function.prototype);//true    //Function与Object一样,但不同是指向Function.prototype;    //上面的方式其实是按照现实中的方式来的    //从无到有的情况    //Function.__proto__===Object.prototype其实就是指向自己,没有任何意义    //js一切均是对象,函数也是对象    //constructor预定义属性,用于引用原型函数对象,是循环引用    //父类.prototype.constructor是全等于父类    //Object.constructor==Function,object本身 就是function函数构造的    //constructor是在该对象原型链上寻找的第一个constructor属性所指向的对象:自己总结下:也就是实例化对象指向父类的对象    function d1() {

    }    var d2=new d1();    console.log(d2.constructor==d1);//true    console.log(d1.constructor==d2);//false    //原型链生成是靠__proto__ 不是prototype    var animal=function () {};    var dog=function () {};    animal.price=2000;    dog.prototype=animal;    var tidy=new dog;    console.log(dog.price);    console.log(tidy.price);    //通过new方式生成的,会产生链,在操作时,new出来的实例化对象    //obj自动生成一个.__proto__属性,这样,如果没有生成.__proto__属性,使用别的属性时,会undefied未定义,    //但如果使用了obj.attr时,因为obj是一个实例对象,所以在使用attr这个属性时,是不会报错的,会正常输出对应的数据    //只有子类或者实例化对象有__proto__(包括自己,不包括最上面的父类)方法    //prototype会给父类和自自己这个类,如果子类被孙子类继承,那么子类也将有prototype和__proto__属性

js原型和原型链个人理解(我的理解)的更多相关文章

  1. JS基础-该如何理解原型、原型链?

    JS的原型.原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对 ...

  2. 前端【JS】,深入理解原型和原型链

    对于原型和原型链,相信有很多伙伴都说的上来一些,但有具体讲不清楚.但面试的时候又经常会碰到面试官的死亡的追问,我们慢慢来梳理这方面的知识! 要理解原型和原型链的关系,我们首先需要了解几个概念:1.什么 ...

  3. Js中关于构造函数,原型,原型链深入理解

    在 ES6之前,在Javascript不存在类(Class)的概念,javascript中不是基于类的,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但 ...

  4. JS原型、原型链深入理解

    原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性. 一.初识原 ...

  5. 理解js中的原型链

    对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性. 关于原型 在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承 ...

  6. JS原型与原型链继承的理解

    一.原型 先从构造函数开始吧! 构造函数是什么?构造函数与其他函数唯一的区别在于调用方式不同.任何函数只要通过new来调用就可以作为构造函数,它是用来创建特定类型的对象. 下面定义一个构造函数 Fem ...

  7. 理解js中的原型,原型对象,原型链

    目录 理解原型 理解原型对象 实例属性与原型属性的关系 更简单的原型语法 原型的动态性 原型链 理解原型 我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象, ...

  8. js原型和原型链理解 constructor 构造函数

    一.对象:普通对象   函数对象 二.构造函数特点:1.需要new实例化,内部使用this对象指向即将要生成的实例对象  2.首字母大写,用于区分普通函数 function Person(name){ ...

  9. js原型和原型链的简单理解

    构造函数创建对象: function Person() { } var person = new Person(); person.name = 'Tian'; console.log(person. ...

  10. 【repost】JS原型与原型链终极详解

    一. 普通对象与函数对象  JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object ,Function 是JS自带的函数对象.下面举例说明 function f ...

随机推荐

  1. hdu1869六度分离(dijkstra)

    Problem Description 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不相 ...

  2. CareerCup Chapter 9 Sorting and Searching

    9.1 You are given two sorted arrays, A and B, and A has a large enough buffer at the end to hold B. ...

  3. CAEmitterLayer实现粒子效果

    在iOS 5中,苹果引入了一个新的CALayer子类叫做CAEmitterLayer.CAEmitterLayer是一个高性能的粒子引擎,被用来创建实时例子动画如:烟雾,火,雨等等这些效果. CAEm ...

  4. 使用ICallbackEventHandler接口更高效实现Ajax

    使用ICallbackEventHandler接口可以方便地高效地实现Ajax功能 1.处理页面需实现ICallbackEventHandler接口,此接口有两个方法 a.GetCallbackRes ...

  5. sqlite--代码操作

    1.创建数据库 NSString * docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainM ...

  6. 武汉科技大学ACM :1003: 零起点学算法67——统计字母数字等个数

    Problem Description 输入一串字符,统计这串字符里的字母个数,数字个数,空格字数以及其他字符(最多不超过100个字符) Input 多组测试数据,每行一组 Output 每组输出一行 ...

  7. bestcoder r44 p3 hdu 5270 ZYB loves Xor II

    这是昨晚队友跟我说的题,不知道当时是什么玄幻的事件发生了,,我看成了两两相乘的XOR 纠结了好长时间间 不知道该怎么办 今天早上看了下这道题,发现是两两相加的XOR  然后就想了想昨晚的思路 发现可做 ...

  8. Java中int和String互相转换的多种方法

    1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...

  9. jQuery 2.2 和 1.12 新版本发布

    新年新气象,jQuery 团队于昨日发布了两个新版本:1.12 和 2.2.这两个版本都包含了大量的Bug修正和功能改进.基本上这会是3.0之前最后一次发布.不过由于3.0不做向下兼容,所以届时 jQ ...

  10. js图片实时加载

    浏览大型网站,特别是图片比较多的图片,如大型的电商网站,你会发现处了第一屏外,往下滚动的时候图片才加载出来,没必要一开始加载就要把全部图片加载出来,这样子打开网面的速度得到了很好提高.以下是笔者目前所 ...