function Test(){}
console.log("Test.prototype ")
console.log(Test.prototype)
const test = new Test()
console.log("test.__proto__ ")
console.log(test.__proto__)
console.log("test.__proto__ === Test.prototype ")
console.log(test.__proto__ === Test.prototype) //true
console.log("Test.prototype.__proto__ === Object.prototype ")
console.log(Test.prototype.__proto__ === Object.prototype) //true
console.log("Object.prototype ")
console.log(Object.prototype)
console.log("Object.prototype.__proto__ ")
console.log(Object.prototype.__proto__) //null
test.a = 1
Object.prototype.c = 3
console.log(test.c)
console.log("Test.__proto__ === Function.prototype ")
console.log(Test.__proto__ === Function.prototype) //true
console.log("Function.__proto__ ")
console.log(Function.__proto__);
console.log("Function.prototype ")
console.log(Function.prototype);
console.log("Function.__proto__ === Function.prototype ")
console.log(Function.__proto__ === Function.prototype)
console.log("typeof Object")
console.log(typeof Object)
console.log("Object.__proto__ === Function.prototype")
console.log(Object.__proto__ === Function.prototype)
console.log("Object.__proto__ === Function.__proto__")
console.log(Object.__proto__ === Function.__proto__)
console.log(test.hasOwnProperty('c')) //判断属性是否在对象本身身上,而不是在原型对象上
console.log('c' in test) //只要属性在对象或原型对象上都是true
console.log(test.constructor === Test)
function Test1(){
this.a = 111
}
test.constructor = Test1
console.log(test)