美文网首页
Javascript中 constructor,__proto_

Javascript中 constructor,__proto_

作者: 三寸日光_梦尧 | 来源:发表于2018-01-15 19:54 被阅读0次

    一 ,Constructor

    1,正常情况下(那就是有例外) constructor指向创建当前对象的构造函数 如下

    2.那么例外来了 当 constructor遇到prototype时 就要注意区分了  例子一

    此时仍然可以看到返回true 我们知道每个函数都有一个默认的属性prototype,而这个prototype的constructor默认指向这个函数。那么继续例子二:

    我们看到 此时返回值为false, 原因就是因为这个神奇的prototype做了手脚,那么来解释一下原因,我们在进行prototyope 的改变时 实际上是进行的是

    所以说 constructor虽然是自带的属性 但是也会发生变化  所以遇到constructor 有prototype时大家一定要小心 。

    二, __proto__和 prototype 

    1.__proto__和 prototype  放在一起对比来说比较好 

        首先明确一点 prototype 是只有函数上才会有 ,__proto__是每个对象都有的属性(不要误以为函数没有函数当然是对象啊),但是__proto__不是一个规范的属性,只支持某些浏览器。

    大多数情况下(很麻烦的又有例外) :__proto__可以理解为构造器的原型

    即 __proto__ === constructor.prototype;

    2.__proto__ 的指向取决于创建的方式

    (1)直接声明方式

    (2)构造器方式

    (3)当create创建出来的对象 不遵循 _proto__ === constructor.prototype;

    三.This

    通过 apply和call可以改变this指向,他俩的区别在于传递参数的不同 就不赘述了

    相关文章

      网友评论

          本文标题:Javascript中 constructor,__proto_

          本文链接:https://www.haomeiwen.com/subject/baydoxtx.html