タグ

javascriptに関するpipeheadのブックマーク (482)

  • ハタさんのブログ : javascriptの暗黒面

    javascript の暗黒面については、ちょっと書かれているので何も言わずもがな。なのですが、最近こういった質問が増えてきたので少し書く。 via - JavaScript の暗黒面を覗く nullはオブジェクトだ! nullは歴史的理由からobjectです。なので、typeofするとobjectって返ってきます。 alert(typeof null); // object なので、この事に気がついている方は次のようなコードを書きます。 if(typeof hoge == 'undefined' || hoge == null){ // do something } たとえば、次のようなコード var hoge = function (a){ if(typeof a == 'number'){ // was number // 数値計算とか return a + 1; } if(type

  • Re: new の挙動 - IT戦記

    以下のエントリへの反応です。 new function() { //どうのこうの } は、 (function(){ this={} //どうのこうの return this })(); みたいなことしてるんだろうか。 http://d.hatena.ne.jp/gnarl/20070628/1183009662 this はキーワードなので変数としては使えないのですが、使えるとするならば、ほとんどそれに近い挙動だと 思います。 一つだけ違うのは this がどういうプロトタイプを持つかということです。 new function() { arguments.callee.prototype.hoge = 'hoge'; alert(this.hoge); // hoge }; (function() { var _this = {}; arguments.callee.prototype.

    Re: new の挙動 - IT戦記
  • (function(){})() の代わりに - IT戦記

    jQuery 見てたら (function() { // hoge })(); を new function() { // hoge }; って書いてたー。おー。たしかにー。

    (function(){})() の代わりに - IT戦記
  • [JavaScript]名前つき関数オブジェクトのスコープ / LiosK-free Blog

    2007-06-18 カテゴリ: Client Side タグ: JavaScript Tips たまたま調べたので忘れないようにメモ。 JavaScriptでは、↓のように匿名関数に名前をつけられるというのは有名な話。 var six = (function factorial(n) { return (n > 0) ? n * factorial(n - 1) : 1; })(3); 匿名関数の中で再帰処理をまわすときに便利。 このとき、関数オブジェクトにつけた名前はどこのスコープに属するのかが気になったから調べてみた。ECMAScriptの仕様書を読めばたぶん書いてあるんだが、探すよりコード書いてしまうほうが速いので。 /* 関数の外 */ var funcObj = function funcName() {}; window.alert(typeof funcName); /*

  • Sending Mail from Script using CDO object

    今日は、ちょっとしたことを調べていて、CDOオブジェクトを使ってスクリプトでメール送信するやり方ではまってしまい少し時間を無駄に使ったので、忘れないうちにメモ。 調べたかったのは、CDOでメール送信する際にエンコーディングにiso-2022-jpを指定すると半角カナを全角カナに自動変換するんだったっけという疑問への回答。確か、そうだったはずと思ったんだけど、ググってもはっきり書いてあるサイトがMicrosoftを含めて見つからない。じゃあ、ちょっとスクリプトを書いて試せばはっきりするじゃんと、スクリプトのサンプルぐらいならググってどこかから引っ張ってきてやれば10分ぐらいで試せると思い手を付けたところでドツボにはまる。 大体がそんなに例が豊富ではない。CDOはドキュメント類がやけに少ないので有名なのは知っていたが、こんなにないとは思いもせず、何とか少ないサンプルをつなげたりしながら形になっ

  • getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記

    getComputedStyle とは!? ある要素にどんなスタイルが当たっているかを計算してくれる。便利な関数。 使いかたはめっちゃ簡単! var style = getComputedStyle(element, ''); alert(style.fontSize); // 14px alert(style.color); // rgb(0, 0, 0) ちなみに第二引数は疑似要素の style を取りたい場合に使います。通常は空文字列でいい。 でも、 getComputedStyle はこのままでは IE, Safari では動かない。 Safari では window(グローバル領域) に getComputedStyle は定義されてなくて、 document.defaultView だけに getComputedStyle が定義されている。 ちなみに、 Firefox, Op

    getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記
  • jmblog.jp - preventDefault() と stopPropagation()

    先日公開した「投稿スラッグ(Post slug)が空白なら警告してくれるWordPress用Greasemonkeyスクリプト」を開発しているときに、JavaScriptでのイベントのキャンセルまわりで見事にハマってしまいました。そのときに調べてわかったことをまとめてみようと思います。(間違いがあれば是非ご指摘ください!) やりたかったこと WordPressの投稿画面で「公開(Publish)」ボタンをクリックしたときに、「投稿スラッグ(Post slug)」のテキストボックスに値が入っていなければ、確認ダイアログを出す。そこで「キャンセル」ボタンが押されたら、フォームの submit を中止する。 最初に思いついた方法 まず頭に浮かんだのは、submit ボタンに対して HTML でイベントハンドラを記述するという、とても古典的な方法でした。

  • 関数名に「onload」を使うと・・・ - Backstage of theater.js

    常識かもしれないけど、初めて知ったのでメモ。 http://q.hatena.ne.jp/1179461074 で回答した際、グローバル宣言の関数ならwindow["関数名"]でアクセスできることを利用しました。 function test(str){ alert(str); } window["test"]("!!!"); ここで疑問が。「test」という名前を、「onload」にしたらどうなるのだろう・・・。 function onload(str){ alert(str); } window["onload"]("!!!"); 通常、windowオブジェクトのonloadプロパティは、ページ読み込み直後に実行される関数を設定する場所です。 結果は・・・。 IE、Opera 「!!!」が一回表示されるだけ。 Firefox 「!!!」の表示後、「[object Event]」が表示され

    関数名に「onload」を使うと・・・ - Backstage of theater.js
  • JavaScript で簡単にスタックトレースを取るテクニック

    Firebug を使うと console.trace(); これだけでスタックトレースを取ることが出来ます。 でも、 XUL の開発とか、人のブラウザで Firebug が入ってない時とかは出来ないので、 そういう時は、 alert(Error().stack); これだけで出来ます。まあ Firefox only ですが。

    JavaScript で簡単にスタックトレースを取るテクニック
  • 404 Blog Not Found:Digest - 今日にでも使うべきJavaScriptの7つのテクニック

    2007年04月25日12:00 カテゴリLightweight LanguagesBlogosphere Digest - 今日にでも使うべきJavaScriptの7つのテクニック 良質の記事だけに全訳したかったのだけど、時間もないので紹介と抄録。 Digital Web Magazine - Seven JavaScript Techniques You Should Be Using Today サンプルコードは、適宜書き換えてあります。 1. Branch when possible - 分岐はなるはやで これは実例を見た方が早いでしょう。クロスブラウザー対応のaddListener()を考える。機能だけを考えれば、以下でOK。 function addListener(el, type, fn) { if ( window.addEventListener ) { el.addE

    404 Blog Not Found:Digest - 今日にでも使うべきJavaScriptの7つのテクニック
  • EfficientJavaScript - Dev.Opera - 効率的な JavaScript

    EfficientJavaScript - Dev.Opera - 効率的な JavaScript 目次 この文書について 効率的な JavaScript ECMAScript eval や Function のコンストラクタを使うのはやめよう eval を書き換えよう 関数を使いたいなら function を使おう with を使うのはやめよう 性能を決める関数で try-catch-finally を使うのはやめよう eval と with は隔離しよう グローバル変数を使うのはやめよう 暗黙のオブジェクト変換に気をつけよう 性能を決める関数で for-in を使うのはやめよう 文字列は累積スタイルで使おう プリミティブの操作は関数呼び出しより速い setTimeout() や setInterval() には文字列でなく関数を渡そう DOM 再描画と再フロー 再フローの回数をでき

  • XMLHttpRequestまとめ - Archiva

    Make a note of it: Web tech, montaineering, and so on. Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。 XMLHttpRequestは、スクリプト言語からサーバとのHTTP通信を行うための組み込みオブジェクト(API)。既に読み込んだページ上からHTTPリクエストを発することができるため、ページ遷移なしでサーバとのデータ送受信が可能になる。Ajaxの基幹技術。 実装にあたって、おおかまかな手順は以下。 文字コードはUTF-8にしておこう。 XMLHttpRequestオブジェクトを作成 XMLHttpRequestオブジェクトからデータを取得 取得したデータを編集、利用 ただしセキュリティ上の問題から、リクエストの送信は同一ドメイン内に制限されている。そのため、ドメイン

  • JavaScript - ユーザ定義オブジェクト

    JavaScriptの高度な書き方,JavaScriptのユーザ定義オブジェクトの作成方法について記します. ユーザ定義オブジェクトとは,その名の通りユーザで定義するオブジェクトです.JavaScriptには組み込みオブジェクトとして,Stringオブジェクト, Mathオブジェクト,RegExpオブジェクトなど数々の有用なオブジェクトが用意されています.ユーザ定義オブジェクトとは,ユーザで定義したこのようなオブジェクトのことをいいます. JavaScriptはC/Pascal言語のような手続き型でプログラミングできますし,C++/Java言語のようにオブジェクト指向型のプログラミングをすることもできます.JavaScript格的なオブジェクト指向型言語とは言えませんが,一つ大きな機能として「フィールドとメソッドを一つのまとまりとして定義するオブジェクトの抽象化」を備えています.このよ

  • Enjoy*Study - undefined

    変数、プロパティが定義されていない(undefined)かの判定処理を、その時々で適当いろいろな書き方をしてしまっているので、自分の中で整理してみます。 良く使う/見かけるのは、下記の3つです。 (!x) (x == undefined) (typeof x == 'undefined') 上記はそれぞれ成立する条件が異なりますので、下記にそれぞれ記載します。 (!x) コード一番短くて済むので多用するのですが、、 !xが成立するのは、xがundefinedの場合だけじゃなくて、多岐にわたるので使用時に注意が必要だと思います。 !xがtrueになるようなものには下記があります。 (思いつくままに挙げてみたので、これもそうだよ!!とかあったらコメントいただけると助かります) undefined null false 0 NaN '' (空文字) プロパティが存在するかどうかで、数値(Numb

    Enjoy*Study - undefined
    pipehead
    pipehead 2007/03/26
    undefined の判定
  • Javascript 動的なCSSの適用 - とみぞーノート

    function applyCSS(doc, cssfile, overwrite) { if (typeof overwrite == "undefined") overwrite = 0; // デフォルト:CSSの追加 // 既存のCSSを削除 if (overwrite && doc.styleSheets.length >= 1) { var links = doc.getElementsByTagName("link"); for (var i = 0 ; i < links.length ; i++) { if (links[i].rel == "stylesheet") links[i].parentNode.removeChild(links[i]); } } // CSS追加 if (document.all) { doc.createStyleSheet(cssfil

  • Javascript cssRules - とみぞーノート

    1. 概要 Javascriptからスタイルシート内のルールを変更する処理のまとめ。スタイルシートそのものを変更したい場合は「Javascript 動的なCSSの適用」を参照。 2. スタイルシート関連のオブジェクト Javascriptからスタイルシートのルールを操る際に関係するオブジェクトを図1にまとめる。FireFoxとIEで若干扱いが異なるので注意が必要。 2.1 stylesheet オブジェクト まずドキュメント内のスタイルシートを扱うstylesheetオブジェクトがある。stylesheetオブジェクトはドキュメントが読み込んでいるCSSファイルや<style>タグで指定したCSS毎に存在する。 ドキュメント内のstylesheetオブジェクトは全てdocument.styleSheetsに格納されており、document.styleSheets[0]のようにして参照できる

  • JavaScript addEventListener() - とみぞーノート

    仕様書を読んでもわかりにくい、addEventListener()の第3引数useCaptureの意味についてのメモ。 addEventListener()はIEでは未実装なので関係なし。 以下はFireFoxで確認。 useCaptureの意味 通常登録したイベントハンドラ(*1)はイベント伝搬のバブリングフェーズで呼ばれる。このため、DOM Treeの下の方のエレメントからイベントハンドラが順番に呼ばれる。 useCaptureをtrueにしてイベントハンドラを登録すると、キャプチャフェーズでイベントハンドラが呼ばれるようになる。このため、その他のイベントハンドラに先だって呼び出されるようになる。 (*1) 以下のものが含まれる。 DOMエレメントのプロパティに設定したイベントハンドラ(element.onmousedown = handler) HTMLタグに埋め込んだイベントハンド

  • JavaScript の for文のベンチマークを取ってみた | フッ君の日常

    前回のエントリーの続き。 「グダグダ言わずにベンチとってみればエエやん」ということで、JavaScript の for文のスタイルが、どんだけ速度に影響を及ぼすのかを調べてみた。 で、まずベンチマークのツール探しから。ググってみたら amachangさんの作ったベンチマークツールが見つかった。ありがとう、amachangさん! ありがたく使わせていただきます!! ということで、こんな感じでベンチマークを取ってみる事にした。benchmark({ test_a: function(){ var sum = 0; var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; for (var i = 0, l = arr.length; i < l; i++) { for (var j = 0, m = arr.length; j < m; j++) { for (va

    JavaScript の for文のベンチマークを取ってみた | フッ君の日常
  • JavaScript の for文の謎 | フッ君の日常

    JavaScripter の皆さんは、for文をfor (var i = 0, l = array.length; i < l; i++) { // 何かの処理 }って書くんだけど、配列長の値を一度別の変数に入れるのは何か理由があるんだろうか? 例えば、「まるごとJavaScript & Ajax !」の弾さんの記事のコードとか、Prototype.js のコードなんかがそう。length メソッドってコスト高いの? 個人的には、for (var i = 0; i < array.length; i++) { // 何かの処理 }でいいじゃん、って思うんだけど。あ、でも「最速インターフェース研究会」のma.laさんは後者の書き方だなぁ。 うーん、よく分からん。 # ちなみに、ma.laさんが落とした原稿って、MochiKit の部分なんだろか? # ここだけ筆者が "編集部" になってて、

    JavaScript の for文の謎 | フッ君の日常
    pipehead
    pipehead 2007/02/27
    for (var i = 0, l = array.length; i < l; i++) { }
  • WSHからメール送信するときのメモ

    ウレタン系高反発マットレスでよく言及されるのが密度です。それを頑張って分かりやすく説明してみます。