什么是javascript原型?

什么是javascript原型?,javascript,prototype,Javascript,Prototype,我对javascript原型有点好奇 我在里面找到了样品 我做了一些修改,所以我可以这样尝试: <html> <body> <script> function Product(name, price) { this.name = name; this.price = price; } function Food(name, price) {

我对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>
它的属性是
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=新产品()在这种情况下很容易混淆。