我对javascript原型有点好奇 我在here找到了样本 我做了一些修改,所以我可以这样试试:
<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}
其make属性name
和price
两次,如果我们区分Food.prototype = new Product();
和Toy.prototype = new Product();
为什么我必须使用那条线?
答案 0 :(得分:3)
每个JavaScript对象都有第二个JavaScript对象(或null, 但这很罕见)与之相关。第二个对象被称为原型,而且 第一个对象从原型继承属性。
由对象文字创建的所有对象都具有相同的原型对象,我们可以参考
JavaScript代码中的此原型对象为Object.prototype
。使用创建的对象
new关键字和构造函数调用使用prototype属性的值
构造函数的原型。所以new Object()
创建的对象
继承自Object.prototype
,就像{}
创建的对象一样。同样,
由new Array()
创建的对象使用Array.prototype
作为其原型和对象
由new Date()
创建,使用Date.prototype
作为其原型。
答案 1 :(得分:1)
嗯,prototype属性允许您向对象添加属性和方法。
要了解的样本: -
<!DOCTYPE html>
<html>
<body>
<script>
function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}
var fred=new employee("Fred Flintstone","Caveman",1970);
employee.prototype.salary=null;
fred.salary=20000;
document.write(fred.salary);
</script>
</body>
</html>
在上面的示例中,我们使用 prototype 向员工添加了一个属性(薪水)。
希望这会对你有帮助......
答案 2 :(得分:0)