什么是javascript原型?
我对javascript原型有点好奇 我在里面找到了样品 我做了一些修改,所以我可以这样尝试:什么是javascript原型?,javascript,prototype,Javascript,Prototype,我对javascript原型有点好奇 我在里面找到了样品 我做了一些修改,所以我可以这样尝试: <html> <body> <script> function Product(name, price) { this.name = name; this.price = price; } function Food(name, price) {
<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>
它的属性是name
和price
两次,如果我们区分Food.prototype=new Product(),是否更有效代码>和Toy.prototype=新产品()代码>
为什么我必须使用该行?每个JavaScript对象都有第二个JavaScript对象(或null,
但这是罕见的)与之相关的。第二个对象称为原型
第一个对象从原型继承属性
由对象文字创建的所有对象都具有相同的原型对象,我们可以参考
在JavaScript代码中将此原型对象作为object.prototype
。使用创建的对象
new关键字和构造函数调用使用prototype属性的值
构造函数作为其原型。因此,由newobject()创建的对象
继承自Object.prototype
,就像{}
创建的对象一样。同样地
由new Array()
创建的对象使用Array.prototype
作为其原型,并且
由new Date()
创建,使用Date.prototype
作为其原型。每个JavaScript对象都有第二个JavaScript对象(或null,
但这是罕见的)与之相关的。第二个对象称为原型
第一个对象从原型继承属性
由对象文字创建的所有对象都具有相同的原型对象,我们可以参考
在JavaScript代码中将此原型对象作为object.prototype
。使用创建的对象
new关键字和构造函数调用使用prototype属性的值
构造函数作为其原型。因此,由newobject()创建的对象
继承自Object.prototype
,就像{}
创建的对象一样。同样地
由new Array()
创建的对象使用Array.prototype
作为其原型,并且
由new Date()
创建,使用Date.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>
职能员工(姓名、职务、出生)
{
this.name=name;
this.jobtitle=jobtitle;
这个.出生的=出生的;
}
var fred=新员工(“fred Flintstone”,“穴居人”,1970年);
employee.prototype.salary=null;
弗雷德:工资=20000;
文件。书写(弗雷德。工资);
在上面的示例中,我们使用prototype向员工添加了一个属性(薪水)
希望这能帮助您……好吧,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>
职能员工(姓名、职务、出生)
{
this.name=name;
this.jobtitle=jobtitle;
这个.出生的=出生的;
}
var fred=新员工(“fred Flintstone”,“穴居人”,1970年);
employee.prototype.salary=null;
弗雷德:工资=20000;
文件。书写(弗雷德。工资);
在上面的示例中,我们使用prototype向员工添加了一个属性(薪水)
希望这能帮助您…像OOP一样,JS中的所有对象都是Object类的后代,它们继承Object.prototype中的所有属性,而您可以重写它们。
对象也可以有空原型,即Object.create(null)与OOP一样,JS中的所有对象都是对象类的后代,它们继承Object.prototype的所有属性,而您可以重写它们。
对象也可以有空原型,即Object.create(null)我不理解这个问题。但是不应该使用.prototype=new Foo()
而应该使用Object.create
来设置继承。看一看。我认为这是文章中的一个错误。正在做Food.prototype=新产品()代码>似乎毫无意义。@freakish:我认为这是为了演示继承。@simonzack在那篇文章Product.call
中被用来演示构造函数链接<代码>Food.prototype=新产品()代码>在这种情况下很混乱,我不明白这个问题。但是不应该使用.prototype=new Foo()
而应该使用Object.create
来设置继承。看一看。我认为这是文章中的一个错误。正在做Food.prototype=新产品()代码>似乎毫无意义。@freakish:我认为这是为了演示继承。@simonzack在那篇文章Product.call
中被用来演示构造函数链接<代码>Food.prototype=新产品()代码>在这种情况下很容易混淆。