Я немного любопытно Javascript прототип я нашел образец в here и я сделал небольшое изменение, так что я могу попробовать, как это:Что такое прототип javascript?
<html>
<body>
<script>
function Product(name, price) {
this.name = name;
this.price = price;
}
function Food(name, price) {
Product.call(this, name, price);
this.category = 'food';
this.otherName = name;
}
Food.prototype = new Product();
function Toy(name, price) {
Product.call(this, name, price);
this.category = 'toy';
}
Toy.prototype = new Product();
var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);
var prod = new Product('test', 20);
console.log(cheese);
console.log(fun);
console.log(prod);
</script>
</body>
</html>
и возвращается, как этот
cheese = Food {name: "feta", price: 5, category: "food", otherName: "feta", name: undefined, price: undefined}
fun = Toy {name: "robot", price: 40, category: "toy", name: undefined, price: undefined}
prod = Product {name: "test", price: 20}
его сделать имущество name
и price
дважды, более эффективно, если мы различаем Food.prototype = new Product();
и Toy.prototype = new Product();
Почему я должен использовать эту строку?
Непонятный вопрос. Но вместо использования '.protoype = new Foo()' вы должны использовать 'Object.create' для настройки наследования. Посмотрите http://stackoverflow.com/q/17392857/218196. –
Я думаю, что это ошибка в статье. Выполнение 'Food.prototype = new Product();' кажется бессмысленным. – freakish
@ freakish: Я думаю, что это чтобы продемонстрировать наследование. – simonzack