Quelle test_chromeutils_shallowclone.js
Sprache: JAVA
"use strict";
add_task(function test_shallowclone() { // Check that shallow cloning an object with regular properties, // results into a new object with all properties from the source object. const fullyCloneableObject = {
numProp: 123,
strProp: "str",
boolProp: true,
arrayProp: [{ item1: "1", item2: "2" }],
fnProp() { return"fn result";
},
promise: Promise.resolve("promised-value"),
weakmap: new WeakMap(),
proxy: new Proxy({}, {}),
};
let clonedObject = ChromeUtils.shallowClone(fullyCloneableObject);
Assert.deepEqual(
clonedObject,
fullyCloneableObject, "Got the expected cloned object for an object with regular properties"
);
// Check that shallow cloning an object with getters and setters properties, // results into a new object without all the properties from the source object excluded // its getters and setters. const objectWithGetterAndSetter = {
get myGetter() { return"getter result";
},
set mySetter(v) {},
myFunction() { return"myFunction result";
},
};
Assert.deepEqual(
clonedObject,
{
myFunction: objectWithGetterAndSetter.myFunction,
}, "Got the expected cloned object for an object with getters and setters"
);
// Check that shallow cloning a proxy object raises the expected exception.. const proxyObject = new Proxy(fullyCloneableObject, {});
Assert.throws(
() => {
ChromeUtils.shallowClone(proxyObject);
},
/Shallow cloning a proxy object is not allowed/, "Got the expected error on ChromeUtils.shallowClone called on a proxy object"
);
});
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.