Fornece calços de compatibilidade para que os motores JavaScript herdados se comportem o mais próximo possível do ECMAScript 6 (Harmony).
Versão HTML do ECMAScript final final
Se você quiser usá -lo no navegador:
es6-shim antes de seus scripts.es5-shim corrija as implementações quebradas, por isso é fortemente recomendado sempre incluí-lo. Além disso, es5-shim deve ser carregado antes es6-shim . Para node.js , io.js ou qualquer fluxo de trabalho gerenciado por npm (este é o método recomendado):
npm install es6-shim
Métodos alternativos:
component install paulmillr/es6-shim se você estiver usando o componente (1).bower install es6-shim se você estiver usando o Bower. No navegador e no nó, você também pode querer incluir unorm ; Consulte a seção String.prototype.normalize para obter detalhes.
Map (requer suporte ao descritor da propriedade ES5) (um calço independente também está disponível)Set (requer suporte ao descritor da propriedade ES5) (um calço independente também está disponível)PromiseString :fromCodePoint() (um calço independente também está disponível)raw() (um calço de Stanadlone também está disponível)String.prototype :codePointAt() (um calço independente também está disponível)endsWith() (um calço independente também está disponível)includes() (um calço independente também está disponível)repeat() (um calço independente também está disponível)startsWith() (um calço independente também está disponível)RegExp :new RegExp , quando recebe um regexp como padrão, não será mais lançado quando recebe um argumento de string "sinalizadores". (requer ES5)RegExp.prototype :flags (requer ES5) (um calço independente também está disponível)[Symbol.match] (requer Symbol nativos)[Symbol.replace] (requer Symbol nativos)[Symbol.search] (requer Symbol nativos)[Symbol.split] (requer Symbol nativos)toStringNumber :Number('0b1') e Number('0o7')EPSILON (um calço independente também está disponível)MAX_SAFE_INTEGER (um calço independente também está disponível)MIN_SAFE_INTEGER (um calço independente também está disponível)isNaN() (um calço independente também está disponível)isInteger() (um calço independente também está disponível)isSafeInteger() (um calço independente também está disponível)isFinite() (um calço independente também está disponível)parseInt() (um calço independente também está disponível)parseFloat()Array :from() (um calço independente também está disponível)of() (um calço independente também está disponível)Array.prototype :copyWithin() (um calço independente também está disponível)entries() (um calço independente também está disponível)fill()find() (um calço independente também está disponível)findIndex() (um calço independente também está disponível)keys() (um calço independente também está disponível)values() (um calço independente também está disponível)indexOf() (ES6 Errata) (um calço independente também está disponível)Object :assign() (um calço independente também está disponível)is() (um calço independente também está disponível)keys() (no ES5, mas não joga mais em valores não anulados/indefinidos no ES6) (um calço independente também está disponívelsetPrototypeOf() (ou seja> = 11)Function.prototype :name (ES6-SHAM, Capas IE 9-11) (um calço independente também está disponívelMath :acosh() (um calço independente também está disponível)asinh()atanh() (um calço independente também está disponível)cbrt() (um calço independente também está disponível)clz32() (um calço independente também está disponível)cosh()expm1()fround() (um calço independente também está disponível)hypot()imul() (um calço independente também está disponível)log10() (um calço independente também está disponível)log1p() (um calço independente também está disponível)log2()sign() (um calço independente também está disponível)sinh()tanh()trunc()A precisão das funções de matemática é 1E-11.
Reflect
apply() (um calço independente também está disponível)construct()defineProperty()deleteProperty()get()getOwnPropertyDescriptor()getPrototypeOf() (um calço independente também está disponível)has()isExtensible()ownKeys() (um calço independente)preventExtensions()set()setPrototypeOf() Symbol (apenas se já existir)
match (e String#match , String#startsWith , String#endsWith , String#includes , suporte RegExp )replace (e String#replace o suporte)search (e suporte correspondente String#search )split (e suporte correspondente String#split ) Símbolos conhecidos só serão fornecidos se o motor já tiver suporte Symbol .
String.prototype Anexo B Métodos HTML (Um calço independente também está disponível)anchor()big()blink()bold()fixed()fontcolor()fontsize()italics()link()small()strike()sub()sup() Esses métodos fazem parte do "Anexo B", o que significa que, embora sejam um padrão de defacto, você não deve usá -los. No entanto, o es6-shim fornece e normaliza seu comportamento entre os navegadores.
O Map , Set e as implementações Promise são subclassáveis. Você deve usar o seguinte padrão para criar uma subclasse no ES5 que continuará trabalhando no ES6:
require ( 'es6-shim' ) ;
function MyPromise ( exec ) {
var promise = new Promise ( exec ) ;
Object . setPrototypeOf ( promise , MyPromise . prototype ) ;
// ...
return promise ;
}
Object . setPrototypeOf ( MyPromise , Promise ) ;
MyPromise . prototype = Object . create ( Promise . prototype , {
constructor : { value : MyPromise }
} ) ; A inclusão de um calço adequado para String.prototype.normalize aumentaria o tamanho dessa biblioteca em um fator de mais de 4. Portanto, recomendamos que você instale o pacote unorm ao lado es6-shim se precisar de String.prototype.normalize . Veja #134 para mais discussão.
Não é possível implementar o Frafmap em JavaScript puro. A implementação de coleções ES6 não possui valores fortemente, o que é fundamental para a coleção. es6-shim decidiu não incluir um calço incorreto.
WeakMap possui casos de uso muito incomuns, para que você provavelmente não precisará dele (use Map simples).
require ( 'es6-shim' ) ;
var assert = require ( 'assert' ) ;
assert . equal ( true , 'abc' . startsWith ( 'a' ) ) ;
assert . equal ( false , 'abc' . endsWith ( 'a' ) ) ;
assert . equal ( true , 'john alice' . includes ( 'john' ) ) ;
assert . equal ( '123' . repeat ( 2 ) , '123123' ) ;
assert . equal ( false , NaN === NaN ) ;
assert . equal ( true , Object . is ( NaN , NaN ) ) ;
assert . equal ( true , - 0 === 0 ) ;
assert . equal ( false , Object . is ( - 0 , 0 ) ) ;
var result = Object . assign ( { a : 1 } , { b : 2 } ) ;
assert . deepEqual ( result , { a : 1 , b : 2 } ) ;
assert . equal ( true , isNaN ( 'a' ) ) ;
assert . equal ( false , Number . isNaN ( 'a' ) ) ;
assert . equal ( true , Number . isNaN ( NaN ) ) ;
assert . equal ( true , isFinite ( '123' ) ) ;
assert . equal ( false , Number . isFinite ( '123' ) ) ;
assert . equal ( false , Number . isFinite ( Infinity ) ) ;
// Tests if value is a number, finite,
// >= -9007199254740992 && <= 9007199254740992 and floor(value) === value
assert . equal ( false , Number . isInteger ( 2.4 ) ) ;
assert . equal ( 1 , Math . sign ( 400 ) ) ;
assert . equal ( 0 , Math . sign ( 0 ) ) ;
assert . equal ( - 1 , Math . sign ( - 400 ) ) ;
var found = [ 5 , 10 , 15 , 10 ] . find ( function ( item ) { return item / 2 === 5 ; } ) ;
assert . equal ( 10 , found ) ;
var foundIndex = [ 5 , 10 , 15 , 10 ] . findIndex ( function ( item ) { return item / 2 === 5 ; } ) ;
assert . equal ( 1 , foundIndex ) ;
// Replacement for `{}` key-value storage.
// Keys can be anything.
var map = new Map ( [ [ 'Bob' , 42 ] , [ 'Foo' , 'bar' ] ] ) ;
map . set ( 'John' , 25 ) ;
map . set ( 'Alice' , 400 ) ;
map . set ( [ 'meh' ] , 555 ) ;
assert . equal ( undefined , map . get ( [ 'meh' ] ) ) ; // undefined because you need to use exactly the same object.
map . delete ( 'Alice' ) ;
map . keys ( ) ;
map . values ( ) ;
assert . equal ( 4 , map . size ) ;
// Useful for storing unique items.
var set = new Set ( [ 0 , 1 ] ) ;
set . add ( 2 ) ;
set . add ( 5 ) ;
assert . equal ( true , set . has ( 0 ) ) ;
assert . equal ( true , set . has ( 1 ) ) ;
assert . equal ( true , set . has ( 2 ) ) ;
assert . equal ( false , set . has ( 4 ) ) ;
assert . equal ( true , set . has ( 5 ) ) ;
set . delete ( 5 ) ;
assert . equal ( false , set . has ( 5 ) ) ;
// Promises, see
// http://www.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript
// https://github.com/petkaantonov/bluebird/#what-are-promises-and-why-should-i-use-them
Promise . resolve ( 5 ) . then ( function ( value ) {
assert . equal ( value , 5 ) ;
if ( value ) throw new Error ( 'whoops!' ) ;
// do some stuff
return anotherPromise ( ) ;
} ) . catch ( function ( e ) {
assert . equal ( e . message , 'whoops!' ) ;
assert . equal ( true , e instanceof Error ) ;
// any errors thrown asynchronously end up here
} ) ; Object.setPrototypeOf / Reflect.setPrototypeOfObject.create(null) , por exemplo, um objeto com null como seu [[Prototype]] ) não pode ter seu [[Prototype]] alterado, exceto por meio de um Object.setPrototypeOf nativo.SetPrototypeof.Symbol bem conhecido sSymbol Globais via Symbol.for . Isso não viola as especificações, mas significa true Symbol.for('Symbol.search') === Symbol.search O projeto foi baseado inicialmente no ES6-Shim por Axel Rauschmayer.