12.2.2 在多个对象之间共享方法

  我们创建一个新的名为speak的函数,在表示不同动物的多个对象中,可以将其用作方法。当在一个对象上调用speak时,它将使用对象的名字(this.name),并且用该动物的叫声(this.sound)来显示一条消息。

《javascript-少儿编程》第12章给对象添加之在多个对象之间共享方法

  现在,创建另一对象,以便可以将speak作为一个方法添加给它:

《javascript-少儿编程》第12章给对象添加之在多个对象之间共享方法

  这里,我们创建了一个名为cat的对象,带有sound、name和speak属性。在❶处,设置了speak属性并将前面所创建的speak函数赋值给它。现在,cat.speak是一个方法,可以输入cat.speak()来调用它。由于在方法中使用了this关键字,当我们在其上调用cat的时候,它将会访问cat对象的属性。现在来看一看:

《javascript-少儿编程》第12章给对象添加之在多个对象之间共享方法

  当调用cat.speak方法的时候,它访问来自cat对象的两个属性:cat.speak(当值为”Miaow”)和this.name(其值为”Mittens”)。

  在其他的对象中,我们也可以将同样的speak函数当作一个方法使用:

《javascript-少儿编程》第12章给对象添加之在多个对象之间共享方法

  再一次,每当this出现在一个方法中的时候,它引用的是在其上调用该方法的那个对象。换句话说,当你调用的horse.speak(),this将会引用horse;而随后,当你调用pig.speak(),this引用pig。

  要在多个对象之间共享方法,可以直接将方法添加到每一个对象中,就像我们对speak所做的那样。但是,如果有很多的方法或对象,单独给每个对象添加相同的方法可能会变得很烦人,并且这可能会使得你的代码一团糟。想象一下,如果你需要整个动物园有100只动物,并且想要每个动物都共享一组10个方法和属性,这将是多大的工作量。

《javascript-少儿编程》第12章给对象添加之在多个对象之间共享方法

  JavaScript对象构造方法提供了一种更好的方式,可以在对象之间共享方法和属性,我们下面将会介绍它。


本站内容未经许可,禁止任何网站及个人进行转载。