function Foo(){
this.y=2;
} typeof Foo.prototype;
Foo.prototype.x = 1;
var obj3= new Foo(); obj3.x;
obj3.y;

Foo构造器 this指向obj3对象。obj3的原型(__proto__)会指向Foo.prototype。
prototype的作用是Foo.prototype会用作new对象的原型。
即obj3.__proto__ == Foo.prototype //ture

Foo.prototype
结果:
constructor : ƒ Foo()
__proto__ : Object

constructor属性指向Foo对象本身
即Foo.prototype.constructor == Foo(true)
__proto__ 是非标准原型。此处是Foo.prototype的原型
一般的对象比如{}都有__proto__属性

注意:prototype是函数的一个内置对象。__proto__是对象的非标准原型

function Person(name,age){
this.name = name;
this.age =age;
}

一般调用this指向全局对象,浏览器中为window
new调用,this指向一个空对象,这个空对象的原型为Person.prototype。this作为return值。

Object.create(Person.prototype)创建一个空对象,并且这个对象的原型指向Person.prototype

var o = {f:function(){return this.a+ this.b}};
var p = Object.create(o)
p.__proto__ == o //true

以上p的原型指向o

var a ={x:1}
a.__proto__ == Object.getPrototypeOf(a) //true
Object.getPrototypeOf获取对象的原型

JS 8-1 OOP概念与继承的更多相关文章

  1. 不会JS中的OOP,你也太菜了吧!(第二篇)

    一.你必须知道的 1> 原型及原型链在继承中起到了关键的作用.所以你一定要理解他们.2> 不会JS中的OOP,你也太菜了吧!(第一篇) 二.继承的6种方法 1> 原型链继承 原型链继 ...

  2. 08 (h5*) js第9天--原型、继承

    目录: 1:原型和原型链 2:构造函数的原型可以改变 3:原型的最终指向 4:先修改原型指向,在添加方法. 5:实例对象中的属性和原型属性重合, 6:一个神奇的原型链 7:继承 8:原型链 9:利用c ...

  3. JS中通过call方法实现继承

    原文:JS中通过call方法实现继承 讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"& ...

  4. js原生设计模式——2面向对象编程之继承—call(this)构造函数式继承

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. js经典试题之原型与继承

    js经典试题之原型与继承 1:以下代码中hasOwnProperty的作用是? var obj={} …….. obj.hasOwnProperty("val") 答案:判断obj ...

  6. 小结JS中的OOP(下)

    关于JS中OOP的具体实现,许多大神级的JS专家都给出了自己的方案. 一:Douglas Crockford 1.1 Douglas Crockford实现的类继承 /** * 原文地址:http:/ ...

  7. 小结JS中的OOP(中)

    此篇文章主要是提炼<JavaScript高级程序设计>中第六章的一些内容. 一:JS中OOP相关的概念 开始之前先总结JS中OOP相关的一些概念: 构造函数:JS中的构造函数就是普通的函数 ...

  8. js两种定义函数、继承方式及区别

    一:js两种定义函数的方式及区别 1:函数声明: function sayA() { alert("i am A"); } 2:函数表达式: var sayB = function ...

  9. 小结JS中的OOP(上)

    前言:大家都知道,OOP有三大特性:封装,继承,多态.下面是自己对这三个特性的理解: 封装:把属性与方法整合到某种数据类型中.目的是让类的使用者按类的编写者的意愿去使用类.在封装过程中会一般会做两件事 ...

随机推荐

  1. D - Area of Mushroom

    Teacher Mai has a kingdom with the infinite area. He has n students guarding the kingdom. The i-th s ...

  2. Mysql----整理

    --------------------------------------------------数据常库常用操作总结---------------------------------------- ...

  3. 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json

    这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json ...

  4. window10装机 nvem简介,针对于 联想R720系列

    1.nvem格式的硬盘比较新,传统的老毛桃,大白菜,并不能有效使用. 2.对于镜像类 goust类,仍然具备 硬盘兼容性差(对于gpt,MAR,uefi并不够智能)成功率极低,容易丢失一些关键文件,造 ...

  5. Django:视图views(一)

    1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...

  6. day5:字典dict

    1, 判断是不是列表 li = ['lis3a', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv'] if type(li) == list: p ...

  7. [qemu][kvm] 在一个vmware虚拟机里安装qemu-kvm虚拟机

    说起来这个需求,简直是傻傻的.但却实实在在的摆在我的面前.... VM无外乎就是为了模拟场景:我现在要的场景就是一台很多个core的linux主机.但是我只有一个装了windows的笔记本.上边有一个 ...

  8. [daily][editer] 二进制编辑工具 hyx

    用了众多之后,终于发现了一个好用的二进制编辑工具: hyx https://yx7.cc/code/ https://en.wikipedia.org/wiki/Comparison_of_hex_e ...

  9. activeMQ的安装和使用

    什么是ActiveMQ? 一款开源的JMS具体实现,是一个易于使用的消息中间件,一个消息容器 安装 下载 官方网站:http://activemq.apache.org/ 解压 linux下的安装,解 ...

  10. go get 的使用

    1.设置环境变量export GOPATH=/f/go_work2 2.go get github.com/xx