1

ここでサンプルを見つけた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}

そのmakeプロパティnameprice2回、区別Food.prototype = new Product();してToy.prototype = new Product();

なぜその行を使用する必要があるのですか?

4

3 に答える 3

3

すべての JavaScript オブジェクトには、関連付けられた 2 番目の JavaScript オブジェクト (または null ですが、これはまれです) があります。この 2 番目のオブジェクトはプロトタイプと呼ばれ、最初のオブジェクトはプロトタイプからプロパティを継承します。

オブジェクト リテラルによって作成されたすべてのオブジェクトは同じプロトタイプ オブジェクトを持ち、JavaScript コードではこのプロトタイプ オブジェクトを として参照できますObject.prototype。new キーワードとコンストラクター呼び出しを使用して作成されたオブジェクトは、コンストラクター関数のプロトタイプ プロパティの値をプロトタイプとして使用します。したがって、 によって作成されたオブジェクトは、 によって作成されたオブジェクトと同様にnew Object() 継承します。同様に、によって作成されたオブジェクトはそのプロトタイプとして使用され、によって作成されたオブジェクトはそのプロトタイプとして使用されます。Object.prototype{}new Array()Array.prototypenew Date()Date.prototype

于 2013-09-16T08:36:17.053 に答える
1

プロトタイプ プロパティを使用すると、オブジェクトにプロパティとメソッドを追加できます。

理解するサンプル:-

<!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を使用して従業員にもう 1 つのプロパティ (給与) を追加しています。

これがあなたを助けることを願っています...

于 2013-09-16T08:37:15.373 に答える
0

OOP と同様に、JS のすべてのオブジェクトは Object クラスの子孫であり、Object.prototype からすべてのプロパティを継承しますが、オーバーライドすることもできます。Object は null プロトタイプを持つこともできます。つまり、Object.create(null) です。

于 2013-09-16T08:38:56.557 に答える