Javascript 是否有一种存储图像变量的短方法?
我想找到一种在变量中存储图像及其源的较短方法 看起来像:Javascript 是否有一种存储图像变量的短方法?,javascript,Javascript,我想找到一种在变量中存储图像及其源的较短方法 看起来像: ctx = document.getElementById("canvas").getContext('2d'); 但对于: var img = new Image(); img.src = "image.png"; 这可以像第一个示例那样在一行中完成吗?听起来您基本上是在问图像构造函数是否可以接受URL作为参数。答案是否定的。当然,您可以编写一个函数: function createImage(src) { var img
ctx = document.getElementById("canvas").getContext('2d');
但对于:
var img = new Image();
img.src = "image.png";
这可以像第一个示例那样在一行中完成吗?听起来您基本上是在问
图像
构造函数是否可以接受URL作为参数。答案是否定的。当然,您可以编写一个函数:
function createImage(src) {
var img = new Image();
img.src = src;
return img;
}
…然后使用它:
var img = createImage("image.png");
var img = createImage("image.png"); // No `load` handler
// or
var img = createImage("image.png", handler); // Using a `load` handler
// or
var img = createImage("image.png", function() { // Using an inline `load` handler
// ...the image loaded...
});
如果您想在这些图像上使用load
事件,您的函数必须支持它,因为在返回的图像上挂起load
是不可靠的。(存在竞争条件,浏览器可以在设置src
后但在挂接事件之前触发load
事件-是的,即使浏览器上的JavaScript本身是单线程的。)这可能如下所示:
function createImage(src, loadHandler) {
var img = new Image();
if (loadHandler) {
img.load = loadHandler;
}
img.src = src;
return img;
}
…然后使用它:
var img = createImage("image.png");
var img = createImage("image.png"); // No `load` handler
// or
var img = createImage("image.png", handler); // Using a `load` handler
// or
var img = createImage("image.png", function() { // Using an inline `load` handler
// ...the image loaded...
});
您还可以使用而不是new
来新建对象,然后可以使用:
var img = Object.create(Image.prototype, {src: {value: "image.png"}});
或者您可以简单地编写var myImage=“”
加载图像的两行代码非常短。(new image()).src='image.png'代码>为自己创建一个新函数(类)?@Matt如何将此图像分配给变量?@hustlerinc-Matt的问题不起作用,如果您尝试'img=(new image()).src='image.png';`您将得到一个值为image.png
的变量img
——而不是图像对象。太棒了,正是我想要的。我会尽快接受的,你可以。它跨浏览器运行良好的几率很低(尤其是因为你从来没有真正调用过构造函数)。