97 lines
1.9 KiB
HTML
97 lines
1.9 KiB
HTML
<p>
|
|
This page tests cached access to properties of dictionary objects and objects
|
|
with changing prototypes. If the test passes, you'll see a series of PASS messages
|
|
below.
|
|
</p>
|
|
|
|
<pre id="console"></pre>
|
|
|
|
<script>
|
|
(function() {
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
function log(s)
|
|
{
|
|
if (this.document)
|
|
document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
|
|
else
|
|
print(s + "\n");
|
|
}
|
|
|
|
function shouldBe(a, aDescription, b)
|
|
{
|
|
if (a === b) {
|
|
log("PASS: " + aDescription + " should be " + b + " and is.\n");
|
|
} else {
|
|
log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + ".\n");
|
|
}
|
|
}
|
|
|
|
(function() {
|
|
function getX(o)
|
|
{
|
|
return o.x;
|
|
}
|
|
|
|
var o = {
|
|
x: 0,
|
|
y: 0
|
|
};
|
|
|
|
getX(o);
|
|
getX(o);
|
|
|
|
for (var i = 0; i < 128; ++i)
|
|
o["p" + i] = 1;
|
|
|
|
shouldBe(getX(o), "getX(o)", 0);
|
|
})();
|
|
|
|
(function() {
|
|
function getProtoX(o)
|
|
{
|
|
return o.protoX;
|
|
}
|
|
|
|
var o = {
|
|
__proto__ : {
|
|
protoX: 0,
|
|
protoY: 0
|
|
},
|
|
};
|
|
|
|
getProtoX(o);
|
|
getProtoX(o);
|
|
|
|
o.__proto__ = {
|
|
protoY: 1,
|
|
protoX: 2
|
|
};
|
|
|
|
shouldBe(getProtoX(o), "getProtoX(o)", 2);
|
|
})();
|
|
|
|
(function() {
|
|
function getProtoX(o)
|
|
{
|
|
return o.protoX;
|
|
}
|
|
|
|
var o = {
|
|
__proto__ : {
|
|
protoX: 0,
|
|
protoY: 0
|
|
},
|
|
};
|
|
|
|
getProtoX(o);
|
|
getProtoX(o);
|
|
|
|
delete o.__proto__.protoX;
|
|
|
|
shouldBe(getProtoX(o), "getProtoX(o)", undefined);
|
|
})();
|
|
})();
|
|
</script>
|