<script>
function x() {
}
//为函数x的prototype原型对象添加add方法
x.prototype.add = function (a) {
return a
}
var xxx = new x()
console.log(xxx.add);//函数add
console.log(x.add);//undefined
//x的prototype拥有add,x的__proto__没有add;结果:x访问不到函数add
//xxx的prototype没有add,xxx的__proto__指向 x的prototype:里面拥有add;结果:x可以访问到函数add
//可以看出原型链的访问顺序是通过对象(实例对象或者函数对象)的__proto__属性往上查找的,和函数自身的prototype无关,
//函数无法访问到定义在自己prototype中的方法(但可以访问prototype里面的__proto__)
console.log(x.constructor);//Function函数
// x的__proto__指向的Function的prototype中的constructor(只会沿着__proto__去寻找constructor)
console.log(x.prototype.constructor);//x函数
// x的prototype中的constructor
//函数无法访问到定义在自己prototype中的方法(但可以访问prototype里面的__proto__);
//当对象(包括函数对象)自身寻找不到属性或者方法时就会沿着自己的__proto__一层一层去寻找
//比如fn沿着__proto__在Function的prototype中找不到,就会继续在Function的prototype沿着__proto__
//访问Object的prototype;然而Object的prototype再沿着__proto__寻找就是null
</script>