




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)
这篇博客深入探讨了JavaScript中的原型链概念,通过示例展示了`__proto__`、`prototype`属性以及它们之间的关系。文章解释了如何通过原型链访问对象属性,包括实例与构造函数之间的联系,并讨论了`Object.prototype`的特殊性及其在原型链中的位置。此外,还涉及到了`hasOwnProperty`方法的作用以及构造函数和`Function.prototype`的相关知识。
1401

被折叠的 条评论
为什么被折叠?



