function testRedefineGetter() { var callGetter = function(o) { return o.x;
};
var proto = {get foo() {}, bar: 1}; var obj = Object.create(proto);
// Add "x" getter on the prototype. Warm up the IC. var count1 = 0;
Object.defineProperty(proto, "x", {get: function(v) {
count1++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callGetter(obj);
}
assertEq(count1, 20);
// Redefine "x" with a different getter. Ensure the new getter is called. var count2 = 0;
Object.defineProperty(proto, "x", {get: function() {
count2++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callGetter(obj);
}
assertEq(count1, 20);
assertEq(count2, 20);
}
testRedefineGetter();
function testRedefineSetter() { var callSetter = function(o) {
o.x = 1;
};
var proto = {get foo() {}, bar: 1}; var obj = Object.create(proto);
// Add "x" setter on the prototype. Warm up the IC. var count1 = 0;
Object.defineProperty(proto, "x", {set: function(v) {
count1++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callSetter(obj);
}
assertEq(count1, 20);
// Redefine "x" with a different setter. Ensure the new setter is called. var count2 = 0;
Object.defineProperty(proto, "x", {set: function() {
count2++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callSetter(obj);
}
assertEq(count1, 20);
assertEq(count2, 20);
}
testRedefineSetter();
function testDeleteAdd() { var callGetter = function(o) { return o.x;
};
var proto = {get foo() {}, bar: 1}; var obj = Object.create(proto);
// Add "x" getter on the prototype. Warm up the IC. var count1 = 0;
Object.defineProperty(proto, "x", {get: function() {
count1++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callGetter(obj);
}
assertEq(count1, 20);
// Delete the getter. delete proto.x;
// Add "x" back with a different getter. Ensure the new getter is called. var count2 = 0;
Object.defineProperty(proto, "x", {get: function() {
count2++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callGetter(obj);
}
assertEq(count1, 20);
assertEq(count2, 20);
}
testDeleteAdd();
function testAccessorToDataAndBack() { var callGetter = function(o) { return o.x;
};
var proto = {get foo() {}, bar: 1}; var obj = Object.create(proto);
// Add "x" getter on the prototype. Warm up the IC. var count1 = 0;
Object.defineProperty(proto, "x", {get: function() {
count1++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callGetter(obj);
}
assertEq(count1, 20);
// Turn the getter into a data property.
Object.defineProperty(proto, "x", {configurable: true, value: 123});
// Turn the data property into a (different) getter. Ensure the new getter is // called. var count2 = 0;
Object.defineProperty(proto, "x", {get: function() {
count2++;
}, configurable: true}); for (var i = 0; i < 20; i++) {
callGetter(obj);
}
assertEq(count1, 20);
assertEq(count2, 20);
}
testAccessorToDataAndBack();
Messung V0.5
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.