タグ

JavaScriptに関するy_rのブックマーク (14)

  • JavaScriptの { } を理解する - Qiita

    結果はどうなったでしょうか。 自分が今使っているGoogle Chromeだとこうなりました。 結果は{a: 10}というオブジェクトです。まあ、これは当然ですね。3 + 5と入力すれば実行されて8が返ってくるのですから、{a: 10}というオブジェクトリテラルを書けば{a: 10}というオブジェクトが作られるのは当然です。 ……。 ここで、一部の人は「おいふざけんなよ」と思っているかもしれません。というのも、この例は環境によっては違う結果になるのです。具体的には、Chrome以外2のブラウザのREPL(FirefoxやEdgeなど)が該当します。あと、ts-nodeのREPLも該当するらしいです。これらの環境では、結果は{a: 10}ではなく次のようになります。 オブジェクトを作ったはずなのに結果が10とか意味不明ですね。そもそも、こんな簡単なプログラムで結果が全然違うとか、JavaSc

    JavaScriptの { } を理解する - Qiita
  • Node.jsにおけるprototype汚染攻撃への対策 - SSTエンジニアブログ

    はじめに こんにちは、CTOのはせがわようすけです。 少し前に大津さんが Node.js におけるprototype汚染攻撃を紹介する記事を掲載されていました。 Node.jsにおけるプロトタイプ汚染攻撃とは何か どういう原理での攻撃なのかの解説は大津さんの記事を参照頂くとして、記事内で紹介されている講演の動画では最終的に任意コード実行まで至っているという点で非常に興味深いものがあります。 攻撃の経路としてはクライアントからHTTP経由でJSONをPOSTするというだけですので、いくら Object.prototype を上書きできたとしても送ることのできるデータはJSONで表現可能なプリミティブな型のみで、JavaScriptの関数は含めることはできません。 この講演動画で扱われているGhost CMSというソフトウェアでは、__proto__ 経由でテンプレートのファイル名だけでなくそ

    Node.jsにおけるprototype汚染攻撃への対策 - SSTエンジニアブログ
  • babel/packages/babylon at master · babel/babel · GitHub

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

    babel/packages/babylon at master · babel/babel · GitHub
    y_r
    y_r 2017/12/13
    Javascript AST パーサ
  • Node.jsのStream APIの概要 - Qiita

    Streamとはファイルの読み書きやSocketでの通信など、主にI/Oにおけるデータの流れを制御するAPIです。 Streamは0,1,2,3のバージョンがありますが、Node.js v0.12からは3が使われているのでそれについて書きます。 公式ドキュメントNode.js v5.2.0 Documentation Streamがわかりやすいですが、特に重要だと思った部分だけ大雑把にまとめてみました。(ドキュメントの日語訳はv0.11.11のものがあります。多少異なりますが参考までに) 利用する側 ReadableStream 例えばReadableStreamによるファイル読み込み処理は次のように書きます。 全てのまとまったデータが一度に取れるのではなく'data'イベントで少しずつデータが流れてくるのが特徴的です。 var readableStream = fs.createRea

    Node.jsのStream APIの概要 - Qiita
  • JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io

    Intro textarea などに入力された文字数を、 JS で数えたい場合がある。 ここで .length を数えるだけではダメな理由は、文字コードや JS の内部表現の話を理解する必要がある。 多言語や絵文字対応なども踏まえた上で、どう処理するべきなのか。 それ自体は枯れた話題ではあるが、近年 ECMAScript に追加された機能などを交えて解説する。 なお、文字コードの仕組みを詳解すること自体が目的では無いため、 BOM, UCS-2, Endian, 歴史的経緯など、この手の話題につき物な話の一部は省くこととする。 1 文字とは何か Unicode は全ての文字に ID を振ることを目的としている。 例えば 😭 (loudly crying face) なら 0x1F62D だ。 1 つの文字に 1 つの ID が割り当てられているのだから、文字の数を数える場合は、この ID

    JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io
    y_r
    y_r 2017/03/03
    覚えた > length では正しい文字数を返さない
  • GitHub - samshull/node-proxy: Deprecated: Harmony Proxies in node (no longer needed)

    node-proxy is an implementation of Harmony Proxies http://wiki.ecmascript.org/doku.php?id=harmony:proxies that allows the developer to create "catch-all" property handlers for an object or a function in node.js. Author: Sam Shull Repository: http://github.com/samshull/node-proxy Issues: http://github.com/samshull/node-proxy/issues Methods: Object create(ProxyHandler handler [, Object proto ] ) thr

    GitHub - samshull/node-proxy: Deprecated: Harmony Proxies in node (no longer needed)
    y_r
    y_r 2017/01/24
    node.js の場合はこっちを使う必要があるのか => arguments にさわった瞬間におかしくなった。無念
  • Array.prototype.slice についての考察(というか妄想)のはなし - .blog

    関数の引数は、配列っぽいけど配列じゃないため扱いにくいから、配列に直す場合があって function sortedArrayFromArgs () { var slice = Array.prototype.slice; // (1) var args = slice.apply(arguments); // (2) args.sort(function (a, b) { return (a === b) ? 0 : (a < b) ? 1 : -1; }); return args; } var $sorted = sortedArrayFromArgs(-123, 123, 345, -987); console.log($sorted); // [ -987, -123, 123, 345 ]上の例だと、可変長の引数をソート済みの配列に直して返しています。 この時に (1) と (2

    Array.prototype.slice についての考察(というか妄想)のはなし - .blog
    y_r
    y_r 2017/01/24
    受け取った可変長引数をそのまま渡したい用途が出てきたので
  • JSで可変長の配列を引数にして関数をコールする、の話し - uzullaがブログ

    一個前の記事( http://uzulla.hateblo.jp/entry/2011/11/18/190503 )について、可変長の配列を引数にして、関数をコールする必要があったので、そのときの会話などをメモ。 http://www.facebook.com/junichi.ishida/posts/10150466421723064?notif_t=like 前提として function func(){ console.log(argument[0]) console.log(argument[1]) console.log(argument[2]) } func( 'a', 'b'. 'c' );JSはこういう事ができる。ちょっとPerlっぽいな。 引数を明示しなくても、argumentという特殊な配列で(perlの@_みたい)値が取れる。 後、以下のコードはJSといいつつCoffe

    JSで可変長の配列を引数にして関数をコールする、の話し - uzullaがブログ
    y_r
    y_r 2017/01/24
    受け取った可変長引数をそのまま渡したい用途が出てきたので
  • Direct Proxiesでmethod missing的なことをやる - Qiita

    Direct Proxiesとは Direct ProxiesってのはES6の機能の一つで、オブジェクトをラップして様々なタイミングで任意の処理を差し込めるというとっても夢広がリングな機能。 harmony:direct_proxies [ES Wiki] 例えば、プロパティのget/set時に処理を差し込むのはこんな感じ。 (Direct Proxiesは現状だとFirefoxでしか動かない。そして下記のコードは無駄にテンプレートリテラル使ってるのでFirefox 34以上じゃないと動かない) // Proxyを使って処理を書き換える対象のオブジェクト var target = { foo: 'bar' }; // Proxyを使ってtargetに対してhandlerを適用したproxyオブジェクトを得る var proxy = new Proxy(target, { // プロパティ読

    Direct Proxiesでmethod missing的なことをやる - Qiita
  • JavaScript character escape sequences · Mathias Bynens

    Having recently written about character references in HTML and escape sequences in CSS, I figured it would be interesting to look into JavaScript character escapes as well. Character codes, code points, and code units A code point (also known as “character code”) is a numerical representation of a specific Unicode character. For example, the character code of the copyright symbol © is 169, which c

    y_r
    y_r 2016/12/26
    文字列リテラルのエスケープについて。やっと U+10000 が書ける...
  • JavaScript ASTを始める最初の一歩

    何かJavaScriptのソースコードを機械的にチェックするためのツールを作りたいという場合に、JavaScriptのASTというものを触る必要が出てくると思います。 この記事では、その取っ掛かりとなる案内を簡単にまとめたものです。 ASTとは AST(Abstract Syntax Tree)はコードをパースした抽象構文木のこと。 JavaScriptの場合はJavaScriptオブジェクト(JSON)として表現されます。 コード: { "range": [ 0, 10 ], "type": "Program", "body": [ { "range": [ 0, 10 ], "type": "VariableDeclaration", "declarations": [ { "range": [ 4, 9 ], "type": "VariableDeclarator", "id": {

    JavaScript ASTを始める最初の一歩
  • Node.jsのrequireをインライン化、無駄なuse strictを取り除くモジュールを書いた

    はじめに Promises Bookという薄いを書いているのですが、書籍中に出てくるサンプルコードはテストが必須であるという原則があります。 サンプルコードは必ずテストコードが必要となる。(読者がコピペして実行するようなコードをテストを書くべきである) promises-book/CONTRIBUTE.md at master · azu/promises-book サンプルコードとテストはNode(といってもほぼCommonJSというだけ)で書いています。 ECMAScript6 Promisesについての内容なので、ブラウザ/Node.js どちらの実行環境でもいいのですが、閲覧するのはブラウザが基になると思うのでブラウザ向けのコードを表示したいという感じになると思います。 CommonJS -> ブラウザ用のJS といえば、browserifyやCommonJS Everywhe

    Node.jsのrequireをインライン化、無駄なuse strictを取り除くモジュールを書いた
  • We have a problem with promises

    Fellow JavaScripters, it's time to admit it: we have a problem with promises. No, not with promises themselves. Promises, as defined by the A+ spec, are awesome. The big problem, which has revealed itself to me over the course of the past year, as I've watched numerous programmers struggle with the PouchDB API and other promise-heavy APIs, is this: Many of us are using promises without really unde

    y_r
    y_r 2016/09/01
    Promise についての突っ込んだ解説
  • JavaScript開発者が一度は読むべきStackOverflow - Qiita

    10.How do JavaScript closures work? http://stackoverflow.com/questions/111102/how-do-javascript-closures-work JavaScriptのクロージャーについて 結構とっつきにくい「クロージャー」に苦労されている人も多いかもしれませんが、サンプルコードが多いので英語わからなくても助かります 個人的にはQuestionの「Like the old Albert Einstein said: ... 」というくだりが好きw 9. What does “use strict” do in JavaScript, and what is the reasoning behind it? http://stackoverflow.com/questions/1335851/what-does-use

    JavaScript開発者が一度は読むべきStackOverflow - Qiita
  • 1