Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,prototype这个词是用来做什么的?_Javascript - Fatal编程技术网

在Javascript中,prototype这个词是用来做什么的?

在Javascript中,prototype这个词是用来做什么的?,javascript,Javascript,Javascript中的原型是否表示添加到对象中的方法?我研究对象Javascript已经有一段时间了,有时我会看到world原型 也许更好的问题是函数中何时使用原型。默认情况下,我认为所有函数都有一个默认的原型属性,即对象中使用的属性。函数就像C++或java中的类一样创建。然后使用NEW关键字创建由函数组成的类 代码如下: function Sprite(url, pos, size, speed, frames, dir, once) { this.pos = pos;

Javascript中的原型是否表示添加到对象中的方法?我研究对象Javascript已经有一段时间了,有时我会看到world原型

也许更好的问题是函数中何时使用原型。默认情况下,我认为所有函数都有一个默认的原型属性,即对象中使用的属性。函数就像C++或java中的类一样创建。然后使用NEW关键字创建由函数组成的类

代码如下:

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;
        },
代码如下:

     var pressedKeys = {}; 
这是一个简单的对象声明,对吗?我认为有几种方法可以在Javascript中声明对象,但这似乎是最常见的方法

更多代码:在下面的代码中,将使用prototype属性。我只是不确定为什么以及应该在哪里使用prototype属性

<script>
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();

</script>

函数MyObject1(){
这是a=1;
这是b=2;
this.myMeth=函数Fart(){
警惕(“你好”);
}
}
var a=新的MyObject1();
var b=新的MyObject1();
书面文件(a.a);
书面文件(文学学士);
a、 myMeth();

原型链是如何将方法与给定类型相关联,而不仅仅是对象的特定实例。 由于不必为每个实例重新定义该方法,因为它在类型级别定义了一次,因此它对性能非常有益

使用原型的示例:

var car = function(){
};

car.prototype.start= function(){
};

var myCar = new car();//all car objects will have the start function defined.
未使用原型的示例:

var car = {};
car.start = function(){}; 
这里最大的区别在于,第二个示例没有利用原型,而只是将start方法附加到当前实例上。
在第一个示例中,所有创建的实例都可以访问start方法。

请参阅本教程阅读所有内容-这非常有帮助您了解吗?不,还没有完全了解。我在读你的文章,你可能想看看:,如果可能的话,你能为这个答案添加一些示例代码吗。我希望看到一个清晰的解释。用一个示例进行了更新,因此基本上prototype关键字用于向对象添加一个函数,而不是原始对象的静态函数。我已经做了很多Java OOP程序,所以我对OOP概念并不陌生,但我对Javascript做的还不够,无法真正看到它们之间的区别。您认为用Javascript创建对象的最佳方式是什么。我见过很多不同的方法,但哪一种是最常见和使用最多的。我更喜欢第一种模式,但这取决于个人偏好。原型提供了一些性能/内存使用方面的好处,因为它允许您一次性定义对象。不过,在我看来,也可以使用对象初始值设定项({}语法在第二个示例中)。特别是对于单实例自定义对象。@Doug:
prototype
不是关键字,它是每个函数都具有的属性,并且具有特殊的含义。与Java中的类相当于“模板”不同,JavaScript对象只是引用了另一个对象,即它们的原型。每当您尝试访问对象上的属性,但该属性在对象本身上不存在时,就会在原型链中查找该属性。构造函数是使用特定原型(构造函数的原型属性)创建新对象的典型方法。现在,您还可以使用
Object.create