原型是什么
简而言之 原型是函数的一个对象属性 创建一个函数的时候 会默认添加一个Prototype属性
我们接下来简单的实现一下
function test(name) {
this.name = name
}
console.dir(test);
console.log(test.prototype);
上述代码已经得到证实了
// prototype (原型 原型对象)
// 1 是函数的一个属性
// 2 是个对象
// 3 创建函数的时候会默认添加Prototype属性
__proto__又是什么呢
// __proto__ 隐式原型
// 对象的属性
// 1 对象的一个属性
// 2 指向构造函数的prototype
接下来我们来证实一下这几句话
var obj = new test(‘小明’)
console.log(obj.__proto__);
console.log(obj.__proto__ === test.prototype);
证明完成
test.prototype也是一个对象 他也应该有__proto__ ,他指向的Object.prototype
也就是
console.log(test.prototype.__proto__ === Object.prototype); //true
那么原型链是什么 ?
// 所谓的原型链就是
// obj {
// __proto__:test.prototype={
// __proto__:Object.prototype={
// __proto__:null
// }
// }
// }
并且给test.prototype中一个属性c 可以在obj中访问到 给Object.prototype一个属性 也可以在obj中访问到
继承是什么
// 继承方法
const parent = {
value: 2,
method() {
console.log(this);
return this.value + 1
}
}
console.log(parent.method());//3 不难理解
const child = {
__proto__: parent,
}
console.log(child.method());//3 this 指向child 但是属性中没有value 在原型链上查找 最后找到原型的value
child.value = 4
console.log(child.method());//child有value属性了 发生属性遮蔽
原文地址:https://blog.csdn.net/weixin_71104826/article/details/135946789
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_63781.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!