prototype和_proto_浅析

JS的原型分成两类:隐式原型和显示原型

显示原型只有函数有,隐式原型所有对象都有

_proto_是实现继承的原理, 通过_proto_指向实现继承

1.默认情况

function person(name) {
    this.name = name;
}
var person1 = new person();

person1.prototype._proto_ = person.prototype

person.prototype._proto_ = Object.prototype

2.其他情况

function Bar(){}
function Foo(){}

Foo.prototype = new Bar() (通过new 实例构造函数实现继承)

Foo.prototype.__proto__ === Bar.prototype


================================================================
function Foo(){}
//我们不想让Foo继承谁,但是我们要自己重新定义Foo.prototype
Foo.prototype = {
  a:10,
  b:-10
}
//这种方式就是用了对象字面量的方式来创建一个对象
Foo.prototype.__proto__ === Object.prototype
console.log(Foo.prototype.constructor);	//[Function: Object]

总结:

 也就是说,通过对象字面量构造出来的对象,其__proto__都是指向Object.prototype

 通过new操作符调用的函数就是构造函数。由构造函数构造的对象,其__proto__指向其构造函数的原型对象。

猜你喜欢

转载自blog.csdn.net/bangbDIV/article/details/83024547