What is the word prototype used for in Javascript?
本问题已经有最佳答案,请猛点这里访问。
javascript中的原型是否表示添加到对象中的方法?我研究对象JavaScript有一段时间了,有时我会看到世界原型。
也许更好的问题是函数中使用的原型是什么时候。默认情况下,我认为所有函数都有一个默认的原型属性,这就是对象中使用的属性。函数就像C++或Java中的类一样被创建。然后使用new关键字创建由函数组成的类。
代码在这里:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function Sprite(url, pos, size, speed, frames, dir, once) { this.pos = pos; this.size = size; this.speed = typeof speed === 'number' ? speed : 0; this.frames = frames; this._index = 0; this.url = url; this.dir = dir || 'horizontal'; this.once = once; }; Sprite.prototype = { update: function(dt) { this._index += this.speed*dt; }, |
代码在这里:
1 | var pressedKeys = {}; |
这是一个简单的对象声明,对吗?我认为有几种方法可以用JavaScript声明对象,但这似乎是最常见的方法。
更多代码:在下面的代码中,是否会使用原型属性。我只是不确定为什么以及应该在哪里使用原型属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function MyObject1() { this.a = 1; this.b = 2; this.myMeth = function Fart() { alert("hello"); } } var a = new MyObject1(); var b = new MyObject1(); document.writeln(a.a); document.writeln(b.a); a.myMeth(); |
原型链是如何将一个方法与给定的类型相关联,而不仅仅是一个对象的特定实例。出于性能原因,这是有益的,因为您不必为每个实例重新定义方法,因为它在类型级别定义了一次。
使用原型的示例:
1 2 3 4 5 6 7 | var car = function(){ }; car.prototype.start= function(){ }; var myCar = new car();//all car objects will have the start function defined. |
未使用原型的示例:
1 2 | var car = {}; car.start = function(){}; |
这里最大的区别是第二个示例没有利用原型,而是只将start方法附加到当前实例。在第一个示例中,所有创建的实例都可以访问start方法。