Entering Passive Mode

< 1 2 3 4 5 6 7 8... >

俺式洗髪法

古今やたらと聞かれるので、いい加減書いておくことにした。

以下、俺式洗髪法。

髪質、体質に大きく影響すると思うので、
これが正解とか、この通りやれば良いというわけではない。
ちゃんとやる人は、プロに聞くこと。

0. 鉄則

痛む原因は、洗いすぎ、濡れているときに触る、
頭皮を洗っていない、ブラシ、ドライヤー、カラー等。

1. 洗い

関数オブジェクト

function invoke(func, x, y) {
    return func(x, y);
}

function foo(x, y) {
    return x * y;
}

foo.value = invoke(foo, 3, 5);

var bar = foo;

alert(bar.value);
alert(foo.toString());
alert(foo === bar);

JavaScript では、関数はオブジェクトの一種である。
関数は、通常のオブジェクトとしての特性に加え、
() 構文で「呼び出し可能」という特徴を持つ、
特別なオブジェクトとして扱われる。

プリミティブのオブジェクト化

var value = "String Literal";
var length = value.length;
alert(length);

var value2 = "String Literal";
value2.property = 12345;
alert(value2.property);

Number, String, Boolean の 3 つの型には、
プリミティブとオブジェクトの両方の型が存在する。
違いは、プロパティを持てるか持てないかだ。

暗黙の型変換が、色々な場所で適応されるため、
各型に対応するプリミティブ値とオブジェクトは、
ほぼ区別することなく透過的に扱うことができる。

また、JavaScript のプロパティアクセサ構文は
プリミティブ値に対しても記述することができるため、
構文上、プリミティブ値にプロパティがあるように見える。

これらの言語機能は強力なのだが、プリミティブ値とオブジェクトが、
単一の同じ型であるという誤解を生む原因ともなっている。

暗黙の型変換

if (new Boolean(false) && "false") {
	alert("Oops!");
}

変数や関数の引数に型を制限できる、型に厳密なプログラミング言語では、
ソースコードを解析した時点で、互換性がない型の値を検出できる。

しかし、JavaScript の値の型は常に実行時に決まる。
なので、原則として、その文を実行するまで、
どのような型が渡されるかは検出できない。

これが何を意味するかというと、関数の引数等、外部から受け取る値については、
設計者が想定している型である保障がないため、
値を使う前に、型を確認する必要があるということだ。

だが、常に型を確認するということは、コーディングの苦痛以外の何者でもないため、
JavaScript は型を制限できない代わりに、自動的・暗黙の型変換を行う仕組みを持っている。

Undefined と Null

残りの 2 つのプリミティブ値は、undefinednull だ。
これらはよく混同されるので注意が必要である。

undefined は変数(プロパティ)の既定値であり、
存在しないプロパティを参照した際に返される値でもある。

null は、用途は Java や C# と同じで、
空のオブジェクト参照を表すために使われる。

まあ、これくらいは基本だろうから、
これらの値をさらに詳しく考えてみよう。

JavaScript では、変数や戻り値は型を持たず、
常に値そのものが型(実行時型)を持っている。
undefinednull も例外ではなく、それぞれ型が存在する。

それは、Null 型と Undefined 型だ。
これが、残りの 2 つのプリミティブ型である。

基本データを表すプリミティブ型

JavaScript のプリミティブ型には、5 つの型が存在する。
そのうち、基本データを表す 3 つを挙げてみよう。

これらがどのようなデータなのかは説明不要だろう。

プリミティブということに、違和感を感じる人は多いと思う。
というのも、Boolean, Number, String の 3 つの型は、
オブジェクトとして、良く知られているからだ。

JavaScript のデータ型

JavaScript のあらゆる値には、その種類を表す型がある。
型は、大きく 2 つの総称型に分けることができる。
それは、オブジェクト型とプリミティブ型である。
JavaScript にもプリミティブ型が存在するのだ。

オブジェクト型は、値の集合を表す。
オブジェクト型の値(以下、オブジェクト)は連想配列(Hash)であり、
任意の文字列のキーに任意の値を関連付けることができる。
オブジェクトに関連付けれらたキーを、プロパティと呼ぶ。

プロパティが自由に変更できるため、オブジェクトは可変である。
オブジェクトは参照型であるため、
代入を行っても、オブジェクトが複製されることはなく、
同一のオブジェクトが参照される。

それに対して、プリミティブ型は、基本となるデータそのものを表す。
プリミティブ型の値(以下、プリミティブ値)は、
オブジェクトと異なり、プロパティを持つことはできず、
具体的な型に応じた、単一の値のみを保持している。

プリミティブ値は、データの最小単位であるため、その値は不変である。

通常の用途では、これらのデータ型を意識することはほとんどないが、
言語的には、これらは明確に区別されている。

Web スクリプティング言語 JavaScript (ECMAScript)

JavaScript。

Web 業界でこの言葉を知らない人は少ないだろう。

しばらくは、言語としての JavaScript (ECMAScript) にスポットライトを当て、
重箱の隅をつつくようなネタをぽつぽつ書いていこうと思う。

古くはサーバ側での HTML 動的生成エンジンとして、
数年前では、ブラウザ上で簡単に使える飾り言語として、
今では、ブラウザの表現力を最大限に引き出す言語として、
Web 業界で欠かせないものになっている。

特別な設備なしに、Web ページ上で利用できるということで、
JavaScript は Web プログラマだけでなく、
Web サイトの製作者やデザイナーにも普及している。

そのため、Web サイトで利用するためのサンプルやリファレンスは、
Web 上のそこらじゅうに情報が転がっているだろうから、
そういったことには触れるつもりはない。

梅干しとか梅シロップとか

熟したので 漬けた

2 日置くと結構熟しててびっくり。

梅 10kg

青梅 漬けた

今年も梅仕事の季節がやってきた。

今年は恵まれ、10kg の梅が手に入った。
去年の倍近いのだが、どう使うかねぇ。

まず、去年好評だった梅シロップは 3kg に増量するとして、
甘みが要らん時のために、梅サワーも作ることにするか。

< 1 2 3 4 5 6 7 8... >
このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS