我是工作中一个小研究组的一员,正在试图更好地理解JavaScript的工作原理。在我们最近关于对象的讨论中,我们了解到一个对象的公共方法在每次实例化对象时都会重新创建,而分配给对象原型的方法只会被创建一次并继承所有实例。据我所知,公共方法和分配给原型的方法都是公开可访问的。
那么我想问的问题是:如果添加到原型显然更有效率,为什么还要创建公共方法呢?公共方法提供了什么样的优势,而原型则没有呢?
我是工作中一个小研究组的一员,正在试图更好地理解JavaScript的工作原理。在我们最近关于对象的讨论中,我们了解到一个对象的公共方法在每次实例化对象时都会重新创建,而分配给对象原型的方法只会被创建一次并继承所有实例。据我所知,公共方法和分配给原型的方法都是公开可访问的。
那么我想问的问题是:如果添加到原型显然更有效率,为什么还要创建公共方法呢?公共方法提供了什么样的优势,而原型则没有呢?
具体回答如下:
公共方法提供的好处是什么,原型没有提供什么好处?
在构造函数中添加的方法可以访问私有信息,例如:
function Student() {
var name = 'Bob';
this.GetName = function() {
return name;
}
}
Student.prototype.SomeOtherPublicMethod = function() {
//no access to name
}
var name = new Student()
并且我向name添加了一个原型,那么它也将对var name2 = new Student()
可用。 - Akshay Khandelwalthis.GetName = function() { ... }
,那么你可以从两个地方访问它,但是它会“每次重新创建”。 - James Thorpe