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
——而不是图像对象。太棒了,正是我想要的。我会尽快接受的,你可以。它跨浏览器运行良好的几率很低(尤其是因为你从来没有真正调用过构造函数)。