关于 Object.getPrototypeOf 和 Object._proto_

发布于 2022-09-11 17:47:14 字数 591 浏览 29 评论 0

代码:

  <script>
            function Dog(){}
            var dog = new Dog();
            var dog1 = Object.create(dog);
            // console.log(dog1._proto_);
            console.log(Object.getPrototypeOf(dog1));
   </script>
        

代码中用Object.create的办法创建了实例dog1,那么dog1这个实例的原型应当是dog。但是实际测试的时候遇到了两个问题:

  1. console.log(dog1._proto_) 输出的是undefined,我百度之后看到很多说法说_proto_是非标准的用法,在es6之后才被纳入标准,不建议使用,但是浏览器(我用的是最新版的chrome)应该是可以解析的才对,为什么会输出undefined呢?

2.于是我改用getPrototypeOf,但是输出的也不是dog1的原型dog,而是构造函数Dog。

对上面两点比较疑惑,求解

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

层林尽染 2022-09-18 17:47:14

1.首先使用的是__proto__访问原型(两个下划线)
2.使用var dog1 = Object.create(dog),表示创建一个对象并且该对象的原型指向dog对象,因此执行Object.getPrototypeOf(dog1)获取的是dog对象

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文