假装写博客 prototype、__proto__、constructor 的作用与区别
2018-12-25 17:29
197 查看
*以下全文用[[Prototype]]代表对象真正的原型链
prototype与__proto__的区别
__proto__是真正的原型链,也就是[[Prototype]],使用原型链时,查找对象的属性是通过__proto__来查找,而不是prototype
varFoo=function(){}; Foo.__proto__.a ='b'; Foo.prototype.a ='a'; alert(Foo.a);//b
prototype只是用于构建用new关键字创建的对象,将构造器函数的prototype的引用指向于构建的对象的__proto__
varFoo=function(){}; var test =newFoo(); alert(test.__proto__ ===Foo.prototype);//true
构造器函数的prototype与__proto__是不相同的,其protoype会被构建的对象的[[Prototype]]引用,其[[Prototype]]是Function对象的[[Prototype]],Function对象的prototype与__proto__是相同的
varFoo=function(){}; alert(Foo.prototype ===Foo.__proto__);//false alert(Function.__proto__ ===Foo.__proto__);//true alert(Function.__proto__ ===Function.prototype);//true
constructor是什么
constructor也就是构造器函数的引用,一个构造器函数的prototype的constructor也就等于这个构造器函数本身,一个构造器函数的__proto__的constructor,也就是Function的consturctor就等于Function本身
varFoo=function(){}; var test =newFoo(); alert(Foo.constructor ===Function);//true alert(Foo.prototype.constructor === test.constructor);//true alert(Foo=== test.constructor);//true alert(Foo.constructor ===Foo.prototype.constructor);// false
Foo |_ protoype |_ consturctor === Foo |_ __proto__ === Object.prototype |_ constuctor === Object |_ __proto__ === null |_ __proto__ |_ __proto__ === Function.protoype |_ constuctor === Function |_ __proto__ === Object.protoype |_ consturctor === Object |_ __proto__ === null
test |_ __proto__ === Foo.protoype |_ constructor === Foo |_ __proto__ === Object.protoype |_ constuctor === Object |_ __proto__ === null
只有函数对象才有protoype属性,Object.proto === Function.proto,Object.proto.contructor === Object
相关文章推荐
- javascript学习——constructor、prototype、_proto_的区别
- JS的this、__proto__ 和. prototype 、constructor
- js——prototype、__proto__、constructor
- __proto__与prototype的区别
- 对象原型的理解 __proto__和prototype的区别
- JS的prototype和__proto__、constructor
- prototype与__proto__的含义、区别以及使用场景
- 一张图理解prototype、proto和constructor的三角关系
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
- 关于继承的prototype , _proto_, constructor
- js的prototype、proto和constructor的关系
- 图解prototype、proto和constructor的三角关系
- JS中prototype与_proto_的区别
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
- 在 JavaScript 中 prototype 和 __proto__ 有什么区别
- javascript对象中的constructor,prototype和__proto__
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍 ,JS原型
- __proto__和prototype的理解(谈区别说明你没有理解)
- 实践一些js中的prototype, __proto__, constructor
- prototype,__proto__,constructor