JS 8-1 OOP概念与继承

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获取对象的原型
原文地址:https://www.cnblogs.com/chrisghb8812/p/9614030.html