以下两个声明之间的区别是什么以及何时应该使用它们

时间:2013-09-18 06:15:31

标签: javascript

我正在学习javascript。我在以下两个表示法中感到困惑,其中新创建的对象继承了属性。它们有何不同,何时使用它们?

代码1:

 var Vehicle = function Vehicle() {
       this.wheel=2
    }

    var vehicle = new Vehicle();
    alert(vehicle.wheel);

代码2:

 var Vehicle = function Vehicle() {
    }
    Vehicle.prototype.wheel = 4;
    var vehicle = new Vehicle();
    alert(vehicle.wheel);

关键字prototype何时使用?

3 个答案:

答案 0 :(得分:4)

原型上定义的属性将由所有实例共享。因此,如果您创建10辆车,他们只是共享车轮属性(只有一辆),而每辆车 都有本身的车轮属性

答案 1 :(得分:2)

最重要的区别是当你向一个函数的原型添加一个属性并从中实例化一个新对象时,通过加强继承链而不是直接在对象上来访问新对象中的属性。

答案 2 :(得分:0)

你需要阅读原型,stackoverflow中有很多线程,做一点搜索。 例如,请阅读此article。或者拿一本书来学习最好的方法,我推荐这本好书,JavaScript:The Good Parts

一般而言,在内存消耗和可扩展的原型链方面使用原型要好得多。