Number constructor issue
f-xyz opened this issue · comments
It changes Number constructor behavior and breaks Chai.js assertion library's.
Example code: 1.js
'use strict';
require('core-js');
var numberObject = new Number(1);
console.log(numberObject); // [Number: 1]
console.log('\n');
console.log(numberObject.constructor(numberObject)); // [Number: 1], should be 1
console.log(Number(numberObject)); // 1
console.log(Number.prototype.constructor(numberObject)); // 1
console.log('\n');
console.log(typeof numberObject.constructor(numberObject)); // object, should be number
console.log(typeof Number(numberObject)); // number
console.log(typeof Number.prototype.constructor(numberObject)); / number
console.log('\n');
console.log(numberObject.constructor === Number); // true
console.log(numberObject.constructor === Number.prototype.constructor); // true
console.log('\n');
console.log(Number.toString()); // function Number() { [native code] }
console.log(numberObject.constructor.toString()); // function Number() { [native code] }
console.log('\n');
console.log(1 instanceof Number); // false
console.log(Object.prototype.toString.call(1)); // [object Number]
console.log(numberObject instanceof Number); // true
console.log(Object.prototype.toString.call(numberObject)); // [object Number]
console.log('\n');
Output of node 1.js
[Number: 1]
[Number: 1] // should be 1
1
1
object // should be number
number
number
true
true
function Number() { [native code] }
function Number() { [native code] }
false
[object Number]
true
[object Number]
Thanks.
So fast and on Sunday! Thanks!