无法在JS控制台Chrome中看到对象的原型
Can't see prototype of object in JS Console Chrome
我正试图通过使用Chrome开发者控制台来获得原型继承。这是我用来设置原型链的代码:
var Organism = Object.create(null);
undefined
var Animal = Object.create(Organism);
undefined
var Mammal = Object.create(Animal);
undefined
var Dog = Object.create(Mammal);
undefined
var Spot = Object.create(Dog);
undefined
我可以给有机体和哺乳动物对象添加一些属性:
Mammal.hasHair = true;
true
Organism.hasHair = false;
false
接下来我为Dog对象定义一些变量:
Dog.numLegs = 4;
4
Dog.speak = function(){return 'woof, woof!';};
function (){return 'woof, woof!';}
最后我为Spot
定义了一些变量Spot.color = 'White';
"White"
Spot.pattern = 'Spots';
"Spots"
Spot.patternColor = 'Black';
"Black"
Spot.weight = 22
22
然而,由于某些原因,当我检查Dog对象时,它输出的属性是这样的,我看不到它的原型…
Spot;
Object {color: "White", pattern: "Spots", patternColor: "Black", weight: 22}
或者如果我尝试这个,我仍然看不到它的原型…
dir(Spot);
Object
color: "White"
pattern: "Spots"
patternColor: "Black"
weight: 22
如果我没弄错的话,我是不是应该有一个名为_proto_
的属性,它将指向狗对象的原型,即哺乳动物?我如何检查对象来查看这个属性?
您需要使用object构造函数的原型来创建第一个对象,如下所示:
var Organism = Object.create(Object.prototype);
创建一个以null为原型的对象将创建一个没有任何属性的对象,包括_proto_
以更深入地了解Object。创建结帐:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create
使用var Organism = new Object(null);
等创建原型对象,并按预期工作
不要完全理解这一点,但这似乎是由于没有构造函数就没有创建原型。因此,在构建new Object()
时,您创建了一个原型。然而,Object.create()
只返回一个对象,如果你尝试new Object.create()
,很明显这不是一个构造函数。
我希望得到一个更全面的答案,因为我也希望在返回的对象中有一个原型。按照您的步骤,我复制了相同的结果。
相关文章:
- 重载JS'firefox中的对象原型
- 带有对象/原型的链式承诺(Q延期)
- 别名或以其他方式合并两个具有不同名称的相同对象原型
- 创建后指定对象原型
- javascript对象原型与jquery冲突
- 为什么我要将函数添加到对象原型中,而不是将其添加到对象中
- 基本对象/原型语法问题
- Javascript对象/原型.我的理解错了吗
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- 在角度表达式中使用对象原型
- 对象原型和继承
- 为什么javascript对象原型被称为“fn”
- Uncaught TypeError:对象原型在Symfony 2中只能是Object或ExtJS为null
- 在Javascript中将对象原型函数绑定到对象
- 对象原型在Canvas Game中不起作用
- 如何获取Javascript对象原型的属性
- 为对象原型提供一个方法,该方法指向对象自身属性的值
- 向对象原型添加命名空间方法
- 在Vanilla Javascript中使用窗体中的对象原型创建多个用户
- Javascript对象原型错误