var obj={
name:'obj',
size:0,
describe:function (){
return 'nothing';
}
};
undefined
typeof obj.prototype;
"undefined"
//为什么这里是"undefined"
........................................................................
function Person(name){
this.name=name;
}
undefined
Person.prototype.describe=function (){
return 'Person named: '+this.name;
};
ƒ (){
return 'Person named: '+this.name;
}
var a=new Person('a');
undefined
Person.prototype instanceof Object;
true
typeof Person.prototype;
"object"
//为什么这里是"object"
Person.prototype===Object.create(Person.prototype);
false
//为什么这里是false
问题插入代码了,为什么第一处typeof是"undefined",第二处是"object";
为什么最后一处是false
问题1.//为什么这里是"undefined"
答:只有方法才有prototype属性,而你定义的obj是一个对象,只有__proto__属性,如果你打印obj.__proto__ 得到的结果就不是undefined了
问题2.//为什么这里是"object"
答:因为你的Person是方法,有prototype属性
问题3. //为什么这里是false
答:这要查看Object.create的api,Object.create(proto, [propertiesObject])其中参数proto是新创建对象的原型对象
所以obj.prototype == Object.create(obj.prototype).__proto__;
当然你也可以打印出两者,看下区别。
附上链接参考:JavaScript深入之从原型到原型链