49 lines
1.1 KiB
HTML
49 lines
1.1 KiB
HTML
<p>This page tests whether a cached [[put]] consults setters in the prototype chain.
|
|
If the test passes, you'll see two PASS messages below.</p>
|
|
|
|
<pre id="console"></pre>
|
|
|
|
<script>
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
function log(s)
|
|
{
|
|
document.getElementById("console").appendChild(document.createTextNode(s));
|
|
}
|
|
|
|
(function() {
|
|
var xSetterCalled = false;
|
|
|
|
function MyConstructor()
|
|
{
|
|
this.x = 1;
|
|
}
|
|
|
|
new MyConstructor;
|
|
new MyConstructor;
|
|
Object.prototype.__defineSetter__("x", function(x) { xSetterCalled = true; });
|
|
new MyConstructor;
|
|
|
|
log(xSetterCalled ? "PASS: 'x' setter was called.\n" : "FAIL: 'x' setter was not called.\n");
|
|
})();
|
|
|
|
(function() {
|
|
var xSetterCalled = false;
|
|
|
|
function makeO()
|
|
{
|
|
var o = { };
|
|
o.x = 1;
|
|
return o;
|
|
}
|
|
|
|
makeO();
|
|
makeO();
|
|
Object.prototype.__defineSetter__("x", function(x) { xSetterCalled = true; });
|
|
makeO();
|
|
|
|
log(xSetterCalled ? "PASS: 'x' setter was called.\n" : "FAIL: 'x' setter was not called.\n");
|
|
})();
|
|
</script>
|