prototype
函数有原型,函数有一个属性叫prototype,函数的这个原型指向一个对象,这个对象叫原型对象。这个原型对象有一个constructor属性,指向这个函数本身。
一个实例化对象,没有prototype属性。
function fn(){
console.log(1);
}
console.log(fn.prototype.constructor == fn)
//true
__proto__
JavaScript中,万物皆对象,任何东西都有__proto__属性。这个叫隐式原型。
第一种情况:
var obj = {
name:'liwudi'
}
obj.__proto__ == Object.prototype;//true
第二种情况:
function Person(){}
var person2 = new Person();
console.log(person2.__proto__==Person.prototype);//true
第三种情况:
function Foo() {
};
console.log(Foo.__proto__==Function.prototype);//true
第四种情况:
console.log(String.prototype.__proto__==Object.prototype);//true