谁能告诉我为什么在使用JavaScript时为什么使用.prototype.
?
我在使用Google Map API时会遇到这种情况。
在其中(仅作为示例),我们仅在类为google.maps.Marker.prototype.setPosition
的情况下使用google.maps.Marker
。
最佳答案
(已修改)我们为什么要使用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
属性。