什么是对象

若干属性的集合

什么是原型?

原型是一个对象,其他对象可以通过它实现继承。

哪些对象有原型?

所有的对象在默认情况下都有一个原型,因为原型本身也是对象,所以每个原型自身又有一个原型(只有一种例外,默认的对象原型在原型链的顶端)

任何一个对象都可以成为原型


 function Person(name){
this.name=name;
}
Person.prototype.sayName=function(){
console.log(this.name);
} var person=new Person("xl");
  1. prototype : prototype是每个 函数对象 都具有的属性,被称为原型对象。

  2. constructor : 始终 指向创建当前对象的构造函数

    任何一个对象都有constructor属性

    1. 如果我们重写这个Person.prototype属性,那么constructor属性的指向就会发生改变了。
    Person.prototype={
    sayName:function(){
    console.log(this.name);
    }
    } console.log(Person.prototype.constructor);// 输出 function Object(){}
    //这里为什么会输出function Object(){}
    //还记得之前说过constructor属性始终指向创建这个对象的构造函数吗? //这里实际上是对原型对象的重写:
    Person.prototype = new Object(){
    sayName:function(){
    console.log(this.name);
    }
    }
    //看到了吧。现在Person.prototype.constructor属性实际上是指向Object的。 //那么我如何能将constructor属性再次指向Person呢?
    Person.prototype.constructor=Person;
    1. person实例继承了Person.prototype原型对象的所有的方法和属性,包括constructor属性。(每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性)
  3. __proto __ : 指向构造该对象的构造函数的原型 (上一级原型) 。

    每个对象都有 __ proto__ 属性。

    其实这个属性指向了 [[prototype]],但是 [[prototype]] 是内部属性,我们并不能访问到,所以使用 __ proto __ 来访问。

总结:

  1. constructor : 在原型中,指向构造函数。实例继承原型所得此属性,指向与原型中的相同

  2. __ proto__ :在实例对象中,指向生成此实例的构造函数的原型。原型也是对象(不在原型链顶端)也有此属性,指向它的构造函数的原型(上一级原型)。

    使用Object.getPrototypeOf()代替__proto__

  3. object instanceof constructor instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

constructor prototype __proto__的更多相关文章

  1. javascript中prototype、constructor以及__proto__之间的三角关系

    三者暧昧关系简单整理 在javascript中,prototype.constructor以及__proto__之间有着“著名”的剪不断理还乱的三角关系,楼主就着自己对它们的浅显认识,来粗略地理理以备 ...

  2. Javascript Prototype __proto__ constructor 三者的关系

    JavaScript三大毒瘤 --- this,原型链,作用域 在我等菜鸟一步一步升级中的过程中,这三个概念总是困扰这我们(可能只有我吧,我比较蠢).这三个东西往往都很绕,今天我就来分享一下我对原型. ...

  3. 深入理解JavaScript原型:prototype,__proto__和constructor

    JavaScript语言的原型是前端开发者必须掌握的要点之一,但在使用原型时往往只关注了语法,其深层的原理并未理解透彻.本文结合笔者开发工作中遇到的问题详细讲解JavaScript原型的几个关键概念, ...

  4. 关于JS call apply 对象、对象实例、prototype、Constructor、__proto__

    关于call与apply的理解容易让人凌乱,这里有个方法可供参考 tiger.call(fox,arg1,arg2...) tiger.apply(fox,[arg1,arg2...]) 理解为 fo ...

  5. 实践一些js中的prototype, __proto__, constructor

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  6. 再次理解JS的prototype,__proto__和constructor

    个人总结: 下面这篇文章很好的讲解了js原型,原型链,个人的总结是要记住这三个属性 prototype.__proto__和constructor 首先明确,js中一切都是对象object(A). ( ...

  7. javascript prototype __proto__区别

    An Object's __proto__ property references the same object as its internal [[Prototype]] (often refer ...

  8. 基础知识点 关于 prototype __proto__

    基础知识点 关于 prototype  __proto__ 供js新手参考 JavaScript 的一些基础知识点: 在 JavaScript 中,所有对象 o 都拥有一个隐藏的原型对象(在 Fire ...

  9. js 原型链 prototype __proto__

    1.说明 函数(Function)才有prototype属性,对象(除Object)拥有__proto__. 2.prototype与__proto__区别 示例: <!DOCTYPE html ...

随机推荐

  1. 英伟达GPU 嵌入式开发平台

    英伟达GPU  嵌入式开发平台 1.         JETSON TX1 开发者组件 JETSON TX1 开发者组件是视觉计算的全功能 开发平台,旨在让您能够快速地安装和运行. 该组件带有 Lin ...

  2. 二、TortoiseSVN 合并、打分支、合并分支、切换分支

    一.合并 点击Edit conflict来编辑冲突: 在合并后的枝干对应栏中编辑后,Save保存后关闭. 二.TortoiseSVN 打分支.合并分支.切换分支 1.SVN打分支 方式一:先检出,再打 ...

  3. python常用函数 T

    timedelta() timedelta方法可以表示一个时间段,并可以进行计算,而且可以直接对datetime计算. 例子: today() datetime的today函数可以表示现在的时间. 例 ...

  4. Linux系统基于fork()新进程的创建

    作者:严哲璟 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 fork属于系 ...

  5. 【Leetcode周赛】从contest-91开始。(一般是10个contest写一篇文章)

    Contest 91 (2018年10月24日,周三) 链接:https://leetcode.com/contest/weekly-contest-91/ 模拟比赛情况记录:第一题柠檬摊的那题6分钟 ...

  6. Wait and Click Element

    Wait and Click Element [Documentation] 等待元素出现并单击元素 [Arguments] ${locator} Wait Until Element Is Visi ...

  7. hdu 5810:Balls and Boxes(期望)

    题目链接 这题似乎就是纯概率论.. E(V)=D(X_i)=npq (p=1/m,p+q=1) #include<bits/stdc++.h> using namespace std; t ...

  8. threeJS射线拾取机制及案例

    前言 在浏览器中浏览三维图形的时候,有时想要与三维图形之间做一些点击事件和交互操作,其中比较常用的一个解决方案就是使用Raycaster对象来实现(射线拾取). 基础知识 世界坐标系:webGL中,世 ...

  9. vue cli3以上的项目中如何使用axois请求本地json文件

    首先明确一点,在vue cli3以上的版本中,存放静态资源的文件是public 我刚开始以为是和vue cli2一样需要放在static文件夹下,但是项目中没有这个文件夹,我就自己创建了一个,结果请求 ...

  10. CSS text-indent 属性

    text-indent 属性首行文本缩进,有点像padding-left的效果.