JS中的prototype、__proto__与constructor
【摘要】
简单实例
// 定义一个函数
function Foo(name) { this.name = name
}
// 调用函数 这个函数返回 undefined
var foo = Foo('Tom')
console.log(foo); // undefined
// 调用构造方法
console.log(Foo); // [Function: Foo]
c...
简单实例
// 定义一个函数
function Foo(name) { this.name = name
}
// 调用函数 这个函数返回 undefined
var foo = Foo('Tom')
console.log(foo); // undefined
// 调用构造方法
console.log(Foo); // [Function: Foo]
console.log(Foo.__proto__); // [Function]
console.log(Foo.constructor); // [Function: Function]
console.log(Foo.prototype); // Foo {}
console.log(Foo.prototype.__proto__); // {}
console.log(Foo.prototype.constructor); // [Function: Foo]
console.log(Foo.prototype.constructor === Foo); // true
// 相当于 Foo.prototype.constructor('Tom') 返回this
foo = new Foo('Tom')
console.log(foo); // Foo { name: 'Tom' }
console.log(foo.__proto__); // Foo {}
console.log(foo.prototype); // undefined
console.log(foo.constructor); // [Function: Foo]
var foo1 = new Foo.prototype.constructor('Tom')
console.log(foo1); // Foo { name: 'Tom' }
var foo2 = new Foo('Tom')
console.log(foo2); // Foo { name: 'Tom' }
console.log(foo1 == foo2); // false
console.log(foo1.__proto__); // Foo {}
console.log(foo1.prototype); // undefined
console.log(foo1.constructor); // [Function: Foo]
console.log(foo2.__proto__); // Foo {}
console.log(foo2.prototype); // undefined
console.log(foo2.constructor); // [Function: Foo]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
总结
属性 | 归属 | 作用 | 指向 | 顶端 |
---|---|---|---|---|
__proto__ |
对象所独有 | 对象属性的查找路径 | 对象->对象 | 原型链顶端null |
constructor | 对象所独有 | 构造函数 | 对象->函数 | Function |
prototype | 函数所独有 | 所有实例共享的属性和方法 | 函数->对象 | - |
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/105672005
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)