在JavaScript中,我想创建一个对象实例(通过new运算符),但是将任意数量的参数传递给构造函数.这可能吗?
我想做的是这样的事情(但下面的代码不起作用):
function Something(){
// init stuff
}
function createSomething(){
return new Something.apply(null, arguments);
}
var s = createSomething(a,b,c); // 's' is an instance of Something
Run Code Online (Sandbox Code Playgroud)
答案
从这里的回复中可以清楚地看出,没有内置的方式.apply()与new运营商通话.然而,人们提出了一些非常有趣的解决方案.
我首选的解决方案是Matthew Crumley的这个解决方案(我已将其修改为通过该arguments属性):
var createSomething = (function() {
function F(args) {
return Something.apply(this, args);
}
F.prototype = Something.prototype;
return function() {
return new F(arguments);
}
})();
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个可以执行以下操作的库.
当库包含在头部时,它会改变HTMLImageElement原型,以便用户碰巧在HTML中使用的任何图像标记或者他们在javascript中动态创建的图像标记将具有由我的库定义的默认的onerror函数.
这样做的结果是,如果任何用户图像无法加载,因为他们指向一个坏URL,我的库将以优雅的方式处理它.
我正在尝试以下作为实验,
var img = document.createElement('img');
img.__proto__.onerror = function() {
alert('hi');
};
document.body.innerHTML = '<img id="foo" src="bar.png"/>'
Run Code Online (Sandbox Code Playgroud)
文件bar.png不存在但不起作用.
但是,如果我只是做类似的事情
document.body.innerHTML = '<img id="foo" src="bar.png" ' +
'onerror="this.src = MODIT.getImage(\'blackTile\').src;"/>';
Run Code Online (Sandbox Code Playgroud)
工作正常.这里MODIT.getImage()是一个返回图像元素的函数.你可以在这里玩这个代码:https://mod.it/ciR_BxqJ/
我正在尝试做什么?或者有没有办法全局捕获所有403 GET错误并以某种方式使用javascript处理它们?
谢谢!
无需更改正在调试的计算机的日期/时间,是否可以通过开发工具或通过在控制台中运行一些自定义JavaScript来设置/更改Google Chrome认为的时间或日期?
IE会new Date()返回您已设置的浏览器认为是的内容,而不是系统的日期。
有很多解决方法,但是调试不同的日期/时间会很方便。