代码:
<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。但是实际测试的时候遇到了两个问题:
- console.log(dog1._proto_) 输出的是undefined,我百度之后看到很多说法说_proto_是非标准的用法,在es6之后才被纳入标准,不建议使用,但是浏览器(我用的是最新版的chrome)应该是可以解析的才对,为什么会输出undefined呢?
2.于是我改用getPrototypeOf,但是输出的也不是dog1的原型dog,而是构造函数Dog。
对上面两点比较疑惑,求解
1.首先使用的是__proto__访问原型(两个下划线)
2.使用var dog1 = Object.create(dog),表示创建一个对象并且该对象的原型指向dog对象,因此执行Object.getPrototypeOf(dog1)获取的是dog对象