Chrome不支持Javascript中的原型属性吗?

Rya*_*hel 2 javascript cross-browser

这是我的代码:

Image.prototype.x = 0;
Image.prototype.y = 0;

var blankImage = new Image();
blankImage.src = "blank.png";
blankImage.x = 16;
blankImage.y = 16;
Run Code Online (Sandbox Code Playgroud)

在Firefox中,如果我这样做blankImage.x将返回16,但在Chrome中它返回0.有什么方法可以解决这个问题吗?我喜欢这个解决我当前问题的方法..

ale*_*lex 5

铬已经定义xy上图像元素.既然你还没有插入的元素到页面中,它xy0.

在Chrome控制台中的至少一个图片的页面上运行此操作...

$$("img")[0].hasOwnProperty("x");
Run Code Online (Sandbox Code Playgroud)

您将看到HTMLImageElement已经直接在其上具有该属性,而不是在其prototype对象上.

如果您在控制台中输入此内容,您也可以直观地看到它...

dir($$("img")[0]);
Run Code Online (Sandbox Code Playgroud)

...然后展开对象.

xy性质是不可变的无法更改,因此他们保留自己的价值,当你试图去修改它们(就好像他们writablefalse).

如果您对a上尚不存在的属性执行相同操作HTMLImageElement,则可以按预期工作.