2011-09-05 40 views
5

我已经在JavaScript/JQuery中做了大量的编程。什么时候应该在JavaScript中使用“prototype”

但我从来没有使用过“原型”。事实上,我不知道它的意思。

你有一个实用的例子,它有用吗?

+5

这可能意味着2件事:一个JavaScript框架和一个JavaScript方法来扩展和定义对象。两者完全不同。不确定你说的是哪一个。 –

+0

这个问题不明确。 lib或obejcts属性? – user278064

+1

您应该阅读:[MDN - 面向对象的JavaScript简介](https://developer.mozilla.org/En/Introduction_to_Object-Oriented_JavaScript)。 –

回答

9

最简单的例子:

function Foo() { 
    this.bar = function() { 
     return 42; 
    } 
} 

现在,只要你想,你可以创建Foo许多实例,调用bar()

var a = new Foo(); 
var b = new Foo(); 

即使尽管这两个对象都有bar()方法在两种情况下都完全相同,但这些方法是不同的。实际上,每个新的Foo对象都会有这个方法的新副本。

在另一方面:

function Foo() {} 
Foo.prototype.bar = function() { 
    return 42; 
}  

具有相同的最终结果,但该函数只存储一次在对象prototype而不是在对象本身。如果您创建了大量的Foo实例并想要保存一些内存,这可能是一个难题。

2

假设你是问有关的Object.prototype,

在JavaScript中的所有对象都从Object下降;所有对象都继承Object.prototype的方法和属性,尽管它们可能被覆盖。例如,其他构造函数的原型会覆盖构造函数属性并提供它们自己的toString方法。对象原型对象的更改会传播到所有对象,除非沿着原型链进一步覆盖了受这些更改影响的属性和方法。

阅读this然后可能this

相关问题