这两种在javascript中创建类的方法之间的区别

前端之家收集整理的这篇文章主要介绍了这两种在javascript中创建类的方法之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这两种创建类的方法有什么区别:
var apple = {
    type: "macintosh",color: "red",getInfo: function () {
        return this.color + ' ' + this.type + ' apple';
    }
}

function Apple (type) {
    this.type = type;
    this.color = "red";
    this.getInfo = function() {
        return this.color + ' ' + this.type + ' apple';
    };
}

以及如何实例化和使用成员?

解决方法

虽然JavaScript是面向对象的语言,但它不使用类.您不在JavaScript中创建“类”.你创建了一个“原型”. JavaScript被认为是 Prototype-based language.

第一个例子被称为“object-literal notation”,用于创建一个对象(其子集通常称为JSON).在基于类的语言中类比这是一个“静态”类,在这种情况下你不需要创建一个新的对象实例;一旦你定义它,它就“存在”.你不会实例化它,你会立即访问苹果的成员,因为苹果已经是一个对象.它也类似于在Java中创建匿名类.你会这样使用它:

alert(apple.getInfo());

在第二个示例中,您将创建一个原型(而不是类),可用于实例化Apple类型的对象.你可以像这样使用它:

var redDelicIoUs = new Apple("Red DelicIoUs");
alert(redDelicIoUs.getInfo());

JavaScript允许您修改添加到对象的原型,因此在您声明Apple原型之后,您仍然可以继续添加或更改它的内容,如下所示:

Apple.prototype.size = "7cm";

执行此操作时,从Apple原型派生的所有对象都将获得一个大小字段.这是PrototypeJS framework如何修改原生JavaScript对象以进行添加的基础.修复功能.

请记住,修改本机JavaScript对象的原型被认为是不好的做法,因此您应该尽可能避免这样做.

猜你在找的JavaScript相关文章