有人可以告诉我为什么我们在使用JavaScript时使用.prototype.
吗?
当我使用谷歌地图api时,我来到这里
其中(仅举例)我们正在使用google.maps.Marker.prototype.setPosition
而类只有google.maps.Marker
。
答案 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
答案 2 :(得分:1)
当我们必须更改整个类中的属性(比如C ++中的静态属性)而不是仅仅在单个对象中时,我们正在使用原型。
Prototype是访问类的静态属性和函数的方法......