我试图通过 Object.create()来查看继承。我创建了Obj1并添加了一些属性&其中的方法。现在,当我在做 obj2 = object.create(obj1); 时,所有属性和方法也必须通过原型继承来实现。最后,为什么找到 obj2.findAge()没有给出结果?请有人帮忙纠正吗?
<html>
<head></head>
<body>
<script>
var obj1 = {
name: "Peter Martin",
age: 29,
printName: function(){
console.log(this.name);
},
printAge: function(){
console.log(this.age);
}
}
var obj2 = Object.create(obj1);
obj2 = {
name: "Ronald Jane",
printName: function(){
console.log("Hello Dear" + this.name);
}
}
obj1.printName();
obj1.printAge();
obj2.printName();
obj2.printAge();
</script>
</body>
</html>
我想要做的是使用 Object.Create()来获得帮助 从Obj1到Obj2, Obj2拥有一些自己的私有属性。请帮助我在这个例子中完成这个。
答案 0 :(得分:1)
在Object.create
之后,您已将新对象引用分配到obj2
,但之后您在obj2 = { ... }
时再次更改了引用,因此您丢失了最后一个引用。如果要在对象中添加其他属性,可以使用已覆盖的Object.create
版本,或者只需通过.
和[]
语法添加它。
findAge
怎么样(你在帖子中提到过)我什么都看不到
var obj1 = {
name: "Peter Martin",
age: 29,
printName: function(){
console.log(this.name);
},
printAge: function(){
console.log(this.age);
}
}
var obj2 = Object.create(obj1, {
name: { value: 'Ronald Jane', writable: true},
printName: { value: function() {
console.log("Hello Dear " + this.name);
}}
});
//obj2 = { // Here you change `obj2` to refer another object, so you have lost anything which is related to `Object.create(obj1)`
// name: "Ronald Jane",
// printName: function(){
// console.log("Hello Dear" + this.name);
// }
//}
obj1.printName();
obj1.printAge();
obj2.printName();
obj2.printAge();