简体   繁体   English

Javascript数组作为原型(不是array.prototype)

[英]Javascript array as an prototype (not array.prototype)

In a snake game, 在蛇游戏中

var snake;
snake.prototype.test = [];
snake.test.push(1);
console.log(snake.test[0]);

This does not return 1 in the console, anyone know why?can anyone help? 这不会在控制台中返回1,有人知道为什么吗?有人可以帮助吗?

Prototypes come from constructors. 原型来自构造函数。 This shows how an instance has access to prototype members. 这显示了实例如何访问原型成员。

// create a constructor function
var Snake = function () {};

// add to the prototype of Snake
Snake.prototype.test = [];

// create a new instance of a Snake
var aSnake = new Snake();

// aSnake has access to test through the prototype chain
aSnake.test.push(1);
console.log(aSnake.test[0]);

// so do other snakes
var anotherSnake = new Snake();
console.log(anotherSnake.test[0]);

References 参考文献

You can create a simple object: 您可以创建一个简单的对象:

var snake = {
    test: []
};

snake.test.push(1);
console.log(snake.test[0]);

Thk :D 塞克:D

In your example, snake is not a constructor function nor has a new instance been created. 在您的示例中, snake不是构造函数,也没有创建新实例。

You might want to read up on object oriented JavaScript if you want to keep going down this path. 如果您想继续走这条路,您可能想阅读面向对象的JavaScript。 For now, though, wouldn't it be simpler just to create a single object instance? 不过,就目前而言,仅创建一个对象实例会不会更简单?

var snake = {};
snake.test = [];
snake.test.push(1);
console.log(snake.test[0]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM