var F = function(){};

F.prototype.a = function(){};
Object.prototype.b = function(){};
Function.prototype.c = function(){};

var f = new F();
f.name = '111';

console.log(f)

 打印f结果:实例化自构造函数F的对象,f有一个私有的name属性

 

  展开对象

对象 f 下有 name 属性和 _proto_ 属性,所有对象在创建时都有一个不公开的 _proto_ 内置属性,这个属性的值就是f的构造原型对象,在这里对象 f 实例自构造函数F,函数对象F的原型为 F.prototype,即 f._proto_ = F.prototype

var F = function(){};
		
F.prototype.a = function(){};
Object.prototype.b = function(){};
Function.prototype.c = function(){};
		
var f = new F();
f.name = '111';
		
console.log(f)
		
console.log(F.prototype)

  

 

 在JavaScript语言中,constructor 属性是专门为 function 而设计的,它存在于每一个构造函数的原型对象的属性中(F.prototype.constructor );这个 constructor 保存了指向构造函数的一个引用。

 在此例中,F.prototype.constructor 指向函数 F;每一个实例都继承原型上的属性和方法,即 F.prototype.constructor = f.constructor = F

 *区分prototype和_proto_

prototype是挂载在构造函数上的原型对象

_proto_是所有对象在创建时都有的内置属性,这个属性的值是构造该对象的函数上挂载的原型

如上例 f._proto_ = F.prototype

 

posted on 2017-06-16 15:48  前端小透明  阅读(195)  评论(0编辑  收藏  举报