抱歉没有问题。我只是在学习JavaScript。
我有一个简单的对象。
var bike = {
wheels: 2,
};
我创建了一个新的,通过create()继承了所有的自行车值,并为新的Object添加了一些新的属性。
var raleigh = Object.create(bike);
raleigh.color = 'red';
当我在新的raleigh对象上执行console.log时,我看不到从自行车对象继承的属性。
console.log(raleigh);
日志是:
{ color: 'red' }
如何登录控制台包括这些继承的所有属性?
答案 0 :(得分:3)
当通过console.log
打印对象时,它会打印出所有属性以及它所继承的对象的链接。您可以在控制台中看到所有继承的属性,您只需要遵循显示对象的原型链(通常使用__proto__
或[[prototype]]
键)。
答案 1 :(得分:1)
当您使用Object.create
时,您的原型将与您继承的对象相同,因此,显示"父亲"您可以看到原型的属性:
console.log(raleigh);
console.log(Object.getPrototypeOf(raleigh));
也许你会期待更多的东西,但我认为这是展示这些属性的快捷方式。
答案 2 :(得分:0)
您可以创建一个新的对象,特别是对于您的日志,其中包含自己的属性
function flatten_inheritance(e) {
var o = Object.create(null), i, prop;
do {
prop = Object.getOwnPropertyNames(e);
for (i = 0; i < prop.length; ++i)
if (!(prop[i] in o))
o[prop[i]] = e[prop[i]];
} while (e = Object.getPrototypeOf(e));
return o;
}
flatten_inheritance(raleigh); // Object {color: "red", wheels: 2, valueOf, toString, etc..}
如果您想停留在Object.prototype
或其他原型,可以在while
条件下执行此操作;
while (e = Object.getPrototypeOf(e) && e !== Object.prototype);
我建议您只在调试时执行此操作,而不是将所有代码从继承中移除
答案 3 :(得分:0)
这会有帮助吗? 我正在发出警报,你也可以检查控制台!
<beans:bean id="accessDecisionManager"
class="org.springframework.security.access.vote.AffirmativeBased">
<beans:constructor-arg>
<beans:list>
<beans:bean
class="org.springframework.security.access.vote.AuthenticatedVoter" />
<beans:bean class="org.springframework.security.access.vote.RoleVoter" />
</beans:list>
</beans:constructor-arg>
</beans:bean>