这两种创建类的方法有什么区别:
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';
};
}
Run Code Online (Sandbox Code Playgroud)
以及如何实例化和使用成员?
虽然JavaScript是面向对象的语言,但它不使用类.您不在JavaScript中创建"类".你创建了一个"原型".JavaScript被认为是基于原型的语言.
第一个示例称为" 对象 - 文字符号 ",用于创建对象(其子集通常称为JSON).在基于类的语言中类比这是一个"静态"类,在这种情况下你不需要创建一个新的对象实例; 一旦你定义它,它就"存在".您不会实例化它,您将apple立即访问成员,因为apple它已经是一个对象.它也类似于在Java中创建匿名类.你会这样使用它:
alert(apple.getInfo());
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,您将创建一个原型(不是类),可用于实例化类型的对象Apple.你可以像这样使用它:
var redDelicious = new Apple("Red Delicious");
alert(redDelicious.getInfo());
Run Code Online (Sandbox Code Playgroud)
JavaScript允许您修改和添加到对象的原型,因此在您声明Apple原型之后,您仍然可以继续添加或更改它的内容,如下所示:
Apple.prototype.size = "7cm";
Run Code Online (Sandbox Code Playgroud)
执行此操作时,从Apple原型派生的所有对象都将获得一个size字段.这是PrototypeJS框架如何修改本机JavaScript对象以添加和修复功能的基础.
请记住,修改本机JavaScript对象的原型被认为是不好的做法,因此您应该尽可能避免这样做.
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |