什么是对象

若干属性的集合

什么是原型?

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

哪些对象有原型?

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

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


 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. 06.Linux-RedHat系统网卡服务连不上活跃连接路径变化

    问题:在新装的系统中,重启网卡的时候出现如下报错 [root@localhost ~]# service network restart 正在关闭接口 eth0: 设备状态:3 (断开连接) [确定] ...

  2. Shell04--循环语句

    目录 Shell04---循环语句 1. 循环语句for基本概述 2. 循环语句for场景示例 3. 循环语句while基本概述 4. 循环语句while场景示例 5. 内置跳出循环语句指令 Shel ...

  3. Java虚拟机——Java内存区域与内存溢出

    内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器.Java虚拟机栈.本地方法栈 ...

  4. Java与C++对比

    Java的优势 Java是纯面向对象的,能够反映一切生活中的对象,编写程序更为容易. 平台无关性,“一次编译,到处运行”.(面试:为什么? 因为Java对每种数据类型分配的长度是固定的,但C++不是) ...

  5. 并行流水线--求 (B+C)*B/2

    public class Msg { public double i; public double j; public String orgStr = null; } import java.util ...

  6. 环境变量,env, set

    separate: win(;), linux(:) liunx 写 export PYTHONPATH=.:./lib:./libraryexport http_proxy=http://proxy ...

  7. js中给数组添加元素的方法有哪些

    unshift:将参数添加到原数组开头,并返回数组的长度 pop:删除原数组最后一项,并返回删除元素的值:如果数组为空则返回undefined push:将参数添加到原数组末尾,并返回数组的长度 co ...

  8. 咱们从头到尾讲一次 Flink 网络流控和反压剖析

    本文根据 Apache Flink 系列直播整理而成,由 Apache Flink Contributor.OPPO 大数据平台研发负责人张俊老师分享.主要内容如下: 网络流控的概念与背景 TCP的流 ...

  9. php strncmp()函数 语法

    php strncmp()函数 语法 作用:比较字符串前n个字符,区分大小写 语法:strncmp(string1,string2,length)直线电机品牌 参数: 参数 描述 string1 必须 ...

  10. php fmod()函数 语法

    php fmod()函数 语法 作用:fmod()函数的作用是两个数值做除法运算后的余数 语法:fmod(X,Y).大理石平台哪家好 参数: 参数 描述 X 必须,X为除数 Y 必须,被除数,如果Y为 ...