EfficientJavaScript - Dev.Opera - 効率的な JavaScript 目次 この文書について 効率的な JavaScript ECMAScript eval や Function のコンストラクタを使うのはやめよう eval を書き換えよう 関数を使いたいなら function を使おう with を使うのはやめよう 性能を決める関数で try-catch-finally を使うのはやめよう eval と with は隔離しよう グローバル変数を使うのはやめよう 暗黙のオブジェクト変換に気をつけよう 性能を決める関数で for-in を使うのはやめよう 文字列は累積スタイルで使おう プリミティブの操作は関数呼び出しより速い setTimeout() や setInterval() には文字列でなく関数を渡そう DOM 再描画と再フロー 再フローの回数をでき
Mon, Jan 1, 0001 Lazy Load delays loading of images in long web pages. Images outside of viewport will not be loaded before user scrolls to them. This is opposite of image preloading. This is a modern vanilla JavaScript version of the original Lazy Load plugin. It uses Intersection Observer API to observe when the image enters the browsers viewport. Original code was inspired by YUI ImageLoader ut
前回の FirefoxのsetTimeoutの実装 - bits and bytes を書いたときには、はてなブックマークのコメントでご指摘いただいているsetTimeoutとpromptを組み合わせるとpromptが終了する前にタイムアウトハンドラが呼び出される現象を知りませんでした。この現象については [JavaScript]JavaScriptはほんとにシングルスレッドで実行されているのか? に詳しく書かれています。 FirefoxのsetTimeoutの実装 - bits and bytes だと、この現象を説明できないので、どうなっているかはっきりさせるためさらに調べてみました。 setTimeout/prompt現象とは かんたんにこの現象について説明しておきます。FirefoxやIEやOperaでは setTimeout( function () { timeout_hand
なかなかどうして、怠惰な若輩者につき不明な点が多々あるため先人の知恵をお借りしたく候。というわけでいろいろ知恵や知識などいただきます。・・・消化不良でしたorz setTimeoutの中の小難しいお話 自分だけじゃ到底調べられないし分かる術もない。Cなんて知るか。だのにこうしてなんとなくでも知ることができるのはありがたいことです。 http://labs.gmo.jp/blog/ku/2007/09/firefoxsettimeout.html Firefoxだけで少し古い記事だけど今でも同じようなものかな。他に私がわかるような資料もないのでこちらをベースに考えさせてもらいます。大きな変更はないだろうし。 タイマースレッド URL先読んだだけではイメージできなかった。整理のため箇条で要約。 Firefoxにはタイマー処理だけを管理している専用のスレッドがある(TimerThread) タイ
現在のIT部門にとって最大の脅威は、マルウエアに感染したWebページではないだろうか。マルウエアに感染したHTML文書は大抵の場合、活動内容を隠しておくために、JavaScriptで攻撃用コンテンツを動的に生成するようになっている。セキュリティ検査で発見されないようにするため、こうした攻撃の手口はどんどん複雑化している。今回分析するのは、自動解読エンジンをごまかす細工と5段階の難読化が施されたサンプルだ。 分析対象はWebページに感染した6Kバイトの難読化JavaScriptであり、解読していくと最後に攻撃用サイトを指す一つのiframeタグが現れる。攻撃者は暗号表やXOR演算、代入暗号に加え、古典的な文字入れ替えといった手法を組み合わせることで、最終的なコンテンツを隠そうとしている。当ブログでも以前こうした難読化手法をいくつか紹介した。 解読するには、ペイロードとなっているこのJavaS
Firefoxのソースコードを追っているうちに、たまたま1年遅れで IT戦記 - JavaScript を学ぶ際に一番重要なのに、誤解されがちな setTimeout 系の概念 の裏側がどうなっているかがわかったので、その話を。 タイマーの管理方法 そもそもjavascriptからsetTimeoutを呼ぶと、どういう仕組みで指定した時間後に渡した関数が呼び出されるようになっているのでしょう。Linuxであればsleepのように一定時間後にawakeするという処理は、タイマーリストによって管理されています。カーネルの中にN jiffies(LinuxのOS内時間の単位はjiffyと呼ぶそうです)経過後に実行することリストがあって、カーネルが4msごとに毎回タイマーリストをチェックしてやることがあったときにはそれを実行しています。 FirefoxもLinuxと同じようにタイマーリストみたいな
あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。
自分のTLで見る感じのJavaScriptな人々 勝手な印象、主観なのでコメントを気にしたら負け。 Firefoxはデフォルト要素なので特に書いてません。
Copyright (C) Mainichi Communications Inc. All rights reserved. 掲載記事の無断転載を禁じます
先日、「JavaScriptのオブジェクトについて考察してみた - あと味」を書いてから、chikuraさんからコメントいただいたり、id:dankogaiさんから「404 Blog Not Found:javascript - にはクラスはない」という記事で言及いただいたり、JavaScript: The Good Partsを読み返したりした結果、newについて調べたいという衝動にかられましたので、その調べた結果を書いてみたいと思います。 newを調べようと思ったキッカケを整理 まずは、そのキッカケから整理します。 chikuraさんのコメントより 押さえるべきポイントは、new演算子の際に何が行われるか?だと思うので、こちらのページもぜひ読んでみてください。 JavaScript の new 演算子の意味: Days on the Moon http://nanto.asablo.j
JavaScript 第5版 p.140 カリー化とは、ある関数の引数をあらかじめ指定した、新しい関数を定義すること。 スコープチェーンってなんだっけ?p.57ページで説明があったのに忘れている。スコープチェーンとは、それぞれのスコープ(グローバルスコープ、関数内スコープ)で、変数を探すためもの。そこには、スコープチェーンにはスコープで参照可能なオブジェクトが並んでいて、順番に探していくことで、「変数名の解決」ができる。 Callオブジェクトとかでてきた。関数の引数やarguments、関数内でvar定義した変数は全部Callオブジェクトとやらのプロパティになるらしい。 function init(){ // do something } init(); こうすると、グローバル名前空間を最小限の汚染で済むようにできる。でももっと謙虚にやるには無名関数を定義してそのまま呼び出せばいい。 (f
wtfjs alert.call.call.call.call.call.apply(function (a) {return a}, [1,2]) // 2 @cramforceがこれを発見したとき、何かとてつもなくすばらしいのを吸ってたに違いない これは単に、 Function.prototype.call.apply(function (a) {return a}, [1,2]) というのと同じであるらしい。しかし、これでもよく分からない。一体、どれほどのものを吸えば、このコードが理解できるようになるのだろうか。 tiger said... あかん、久しぶりに笑いが止まらん May 14, 2010 at 11:13 PM kuy said... 変形していくとわかりやすいと思います: Function.prototype.call.apply(function (a) {retur
Partially applying a function is a, particularly, interesting technique in which you can pre-fill-in arguments to a function before it is ever executed. In effect, partially applying a function returns a new function which you can call. This is best understood through an example: String.prototype.csv = String.prototype.split.partial(/,\s*/); var results = "John, Resig, Boston".csv(); alert( (resul
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く