zloirock / core-js

Standard Library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Number constructor issue

f-xyz opened this issue · comments

commented

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.

commented

So fast and on Sunday! Thanks!