2015-09-18 10 views
13

Przeczytam przez ECMA Script 2015 specification.Nie-ECMAscript dla funkcji

Pod functions widzę:

Oprócz swoich właściwości, funkcji zawiera kod wykonywalny i stanu, które określają, w jaki sposób zachowuje się przy wywołaniu. Kod funkcji może lub nie może być zapisany w ECMAScript(podkreślenie dodano).

W jakich okolicznościach kod funkcji nie zostałby zapisany w skrypcie ECMA?

Odpowiedz

14

natywne funkcje przewidziane przez środowiska wykonawczego (jak String i Array klas lub setTimeout lub przeglądarce DOM) są często napisane (lub zasilane przez inne funkcje piśmie) w C.

+0

Co jest dla mnie mylące, to jest sekcja bezpośrednio pod funkcją "wbudowanych funkcji", gdzie jest napisane " Przykłady wbudowanych funkcji obejmują parseInt i Math.exp. Implementacja może zapewnić wbudowane funkcje zależne od implementacji, które nie są opisane w tej specyfikacji. " Wygląda na to, że różni się od poprzedniej sekcji "funkcja". –

+0

@juwiley: Większość hostów udostępnia inne funkcje, które nie są objęte specyfikacją ECMAScript (np. DOM lub 'console'). – SLaks

+0

Oto kilka materiałów do czytania dla osób zainteresowanych, jeśli i jak mogą sami pisać tego rodzaju funkcje (dla węzła): [1] (https://github.com/kkaefer/node-cpp-modules), [2] (http://slizall.com/how-to-write-your-own-native-nodejs-extension/), [3] (http://joseoncode.com/2012/04/10/writing-your-first -natywny-moduł-dla-węzła-kropka-js-na-windows /), [4] (http://kkaefer.github.com/node-cpp-modules/), [5] (http: // nkzawa .tumblr.com/post/46089897239/how-to-write-native-node-addons). – sdgluck

9

W jakich okolicznościach kod funkcji nie zostałby zapisany w skrypcie ECMA?

Podstawowe funkcje zapewniane przez silnik JavaScript. Na przykład. Array.prototype.find:

> Array.prototype.find 
find() { [native code] } 

Na przykład V8, silnik JavaScript Chrome jest zaimplementować w C++, więc ta metoda jest zaimplementowana w języku C++.

+0

myślę, że istnieją wiele funkcji napisanych w (uprzywilejowanym) javascript w implementacji V8, które są nadal uszeregowane do '[kodu natywnego]' – Bergi