55 lines
988 B
JavaScript
55 lines
988 B
JavaScript
class C extends null {}
|
|
|
|
var c = new C;
|
|
assert.isTrue(c instanceof C);
|
|
assert.isFalse(c instanceof Object);
|
|
|
|
// Closure testing framework tries to toString the object and fails.
|
|
assert.isTrue(Object.getPrototypeOf(c) === C.prototype);
|
|
assert.isTrue(Object.getPrototypeOf(Object.getPrototypeOf(c)) === null);
|
|
|
|
assert.equal(c.toString, undefined);
|
|
|
|
class D extends null {
|
|
constructor(...args) {
|
|
super(...args);
|
|
}
|
|
}
|
|
|
|
// super() does not depend on the [HomeObject]. It just calls the [Prototype]
|
|
// of the function.
|
|
new D();
|
|
|
|
class E extends function() { return null }() {
|
|
constructor(...args) {
|
|
super(...args);
|
|
}
|
|
}
|
|
|
|
// super() does not depend on the [HomeObject]. It just calls the [Prototype]
|
|
// of the function.
|
|
new E();
|
|
|
|
function f() {};
|
|
f.prototype = null;
|
|
|
|
class F extends f {
|
|
get x() {
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
assert.equal(1, new F().x);
|
|
|
|
|
|
function g() {}
|
|
function h() {}
|
|
g.prototype = h;
|
|
class G extends g {
|
|
get x() {
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
assert.equal(2, new G().x);
|