什么是javascript mvc / oop结构中的原型

时间:2013-11-27 13:42:18

标签: javascript google-maps javascript-objects javascriptmvc

有人可以告诉我为什么我们在使用JavaScript时使用.prototype.吗? 当我使用谷歌地图api时,我来到这里 其中(仅举例)我们正在使用google.maps.Marker.prototype.setPosition而类只有google.maps.Marker

3 个答案:

答案 0 :(得分:2)

  

(改编)我们为什么要使用google.maps.Marker.prototype.setPosition

简而言之,使用new google.maps.Marker(/* params */)创建的任何对象都可以访问在那里定义的setPosition属性(除非被覆盖):

google.maps.Marker.prototype.setPosition = function() { return 42; }

var x = new google.maps.Marker();
x.setPosition(); // 42

var y = new google.maps.Marker();
y.setPosition(); // 42

x.setPosition = function() { return 'Overriden only for x'; };    
x.setPosition(); // Overriden only for x
y.setPosition(); // 42

MDN解释了它的机制。它的要点是new创建一个从构造函数的prototype属性继承(通过原型链)的对象。

答案 1 :(得分:2)

大多数在学习javascript之前熟悉c ++或java的程序员

所以他们想要像在java和c ++中一样使用javascript来模拟四个概念:静态字段

类。类的静态方法。对象的实例字段,对象的方法

模拟对象的方法,通常使用构造函数的原型属性

function Book (name) {
  this.name = name;
}

Book.prototype.getName = function () {
  return this.name;
}

var b = new Book("javascript");

console.log(b.getName()); // javascript

http://jsfiddle.net/98yPb/这是演示

答案 2 :(得分:1)

当我们必须更改整个类中的属性(比如C ++中的静态属性)而不是仅仅在单个对象中时,我们正在使用原型。

Prototype是访问类的静态属性和函数的方法......