jQuery初心者です。
仕事で簡単なゲームを制作することになり、
まずは、わからない用語を知ろうと思いネットを調べ回ったのですが、
いまいち理解できない用語がありました。
大変恐縮ですが、初心者の私でもわかるような説明はないでしょうか…。
可能であれば、記述のどの部分がその用語にあたるのかも知りたいです。
参考サイトなどでも構いませんので、ご教示頂けますと幸いです。
いまいち理解できていない用語と私の解釈
■オブジェクト
$('.A li').B() … 太文字部分がオブジェクト?
■プロパティ
$('.A li').css('color':'red'); … 太文字部分がプロパティ?
■引数と戻り値
function hoge(ここが引数?) {
//実行する処理
return ここが戻り値?;
}
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
jQueryを深く知ろうと思うなら、まずはプログラミング言語であるJavaScriptについて学んでください。jQueryはJavaScriptのライブラリです。JavaScriptを知らなければ、jQueryを使いこなす事はできません。JavaScriptを知らなくても、やり方が載っているサイトや書籍のコードをコピペである程度の事はできますが、応用してオリジナルを作り込もうとする時点で壁にぶつかります。
オブジェクトもプロパティも引数も戻り値もJavaScriptの用語です。jQurey特有の用語ではありません。また多くのプログラミング言語でも同じ用語をほぼ同じ意味で用いています。
###オブジェクト
広義ではプログラミング言語において、一つのもの、または、まとまりとして扱うことができるあらゆる値(データ)のことを指します。しかし、JavaScriptでは__Objectタイプ(Object type)__である値(データ)のことを指します。以下、JavaScriptにおけるオブジェクトについて説明します。
JavaScriptには様々な値(データ)があります。undefined
、null
、真偽値(true
, false
)、数値(1
、3.14
等)、シンボル(Symbol('abc')
等)、文字列('abc'
等)はプリミティブタイプの値で、プリミティブ値と言われ、オブジェクトではありません。それ以外の、例えば、Object({a: 0}
等)、関数(function(x){return x;}
等)、配列([0, 1]
等)はそれぞれ、Object
クラス、Function
クラス、Array
クラスのインスタンスであるオブジェクトです。
※ JavaScriptはクラスベースではなく、プロトタイプベースです。そのため、__クラス__なるものがあるわけではありません。class構文は存在しますが、プロトタイプベースの糖衣構文に過ぎません。あるクラスのインスタンスというのは、厳密にはそれらのクラスである関数オブジェクトをコンストラクタとし、それらが持つprototype
を__proto__
に設定されていることを示します(ES5以前の実装では__proto__
があるとは限りません)。Object
等はオブジェクトであり、コンストラクタとして使える関数であり、プロトタイプになるものなのですが、厳密な呼び方をすると複雑になるため、クラスベースのオブジェクト指向の流儀に則り、ここでは「クラス」と表現し、その「クラス」を雛形とするオブジェクトをその「クラス」の「インスタンス」と表現します。また、「直属のインスタンス」とはそのクラスを直属のプロトタイプとして持つことを示します。
Objectタイプである値をオブジェクトと言うのでは無かったのか?Object
クラスのインスタンス以外はObjectタイプじゃないのではないか?と思ったのかも知れません。いえいえ、オブジェクトと呼んでも問題ありません。なぜならプリミティブタイプを除く通常のクラスは全てはObject
クラスを継承しているからです(ECMAScript規定外のネイティブオブジェクトについてはその限りではありません)。Funciton
クラスもArray
クラスもObject
クラスを拡張したクラスに過ぎません。なのでFunction
クラスやArray
クラスのインスタンスは、同時に、Object
クラスのインスタンスでもあると見なすことができるのです。なので、これらをまとめて、Objectタイプとし、オブジェクトと読んでいるのです。
※ Object.create()
等で作成したconstructorを持たないオブジェクトなど、例外的なオブジェクトも存在します。これらはObject
クラスのインスタンスではありませんが、Objectタイプであるためオブジェクトです。
jQueryも同じです。jQureyライブラリを使うとjQuery
クラスというクラスが追加されます(jQuery
は関数でもあります)。これもObject
クラスを継承しています。jQurey
クラスのオブジェクトは$('.abc')
等の書き方で作成できますが、これもObject
クラスのインスタンスとして性質を持っています。このようなjQuery
クラスのオブジェクトを「jQueryオブジェクト」と呼ぶ場合があります。「オブジェクト=jQueryオブジェクト」では決してありませんが、文脈によっては単に「オブジェクト」と言っている場合があるので注意が必要です(そのような書き方をしている書籍やサイトは、著者の知識が足りずにそのように言っている場合がありますので、参考にしないことをお勧めします)。
なお、Object
クラスの直属のインスタンス({}
や{a: 1}
等)を単に「オブジェクト」と呼んでいるJavaScriptの書籍やサイトもあります。英語ではこのような「Object
クラスのオブジェクト」のことを"Objects"(大文字、固有名詞扱い)と表現し、オブジェクトを"objects"(小文字、一般名詞扱い)と表現して分けているのですが、そのまま直訳してしまった場合が多いです。原書がある場合は、原書を参考にした方がいいでしょう。(この文章ではこの種類のオブジェクトを単にObjectと表現し、Object
クラスそのものをさすオブジェクトはObject
と分けて表現しています。)
####補足
非常にややこしいことに、JavaScriptでは「オブジェクト(object/Object)」と呼ばれるものが複数存在します。
- objects: 値(データ)の一種であるオブジェクト。
- Object type: Objectタイプ(Object型)というtype(型)の一つ。他のtypeは全てプリミティブタイプです。ここでのtypeはJavaScript特有の定義があるため、注意が必要です。一般的な型とは異なりますし、TypeScriptの型とも一致しません。
- Object constructor / Object objects: "Object"という名前(内部的には%Object%という名前)の組み込みオブジェクト(コンストラクタ)。Object(
{}
等)のコンストラクタになる関数であり、プロトタイプです。また、Object自身がいくつかのプロパティを持ちます。上で「Object
クラス」と言っているそのクラスそのもの事です。 Object
: 3.を指すグローバルオブジェクト(global object)のプロパティ。つまり、3.のJavaScriptのコード上での表現です。- Objects: 3.を直属の雛形とするオブジェクト。上で「
Object
クラスの直属のインスタンス」のことです。 - object initializer / object literal: 5.を作る初期化子/リテラル。
1.と6.以外は必ず大文字(固有名詞)で表現されます。
###プロパティ
JavaScriptのプロパティは先ほどのオブジェクトに深く関わります。全てのオブジェクトは名前が付いたプロパティなるものを持ち、それぞれ参照(get)と代入(set)ができます。
※ 配列(Array)は少し特殊なので注意が必要です。以下、配列の場合を除く説明です。
JavaScript
1var obj = {a: 0, b: 1}; 2console.log(obj.a); // 参照、0 が表示 3obj.a = 2; // 代入、obj の a に 2 が代入される。 4console.log(obj.a); // 参照 2 が表示
なお、この動作はObject.defineProperty()
等を使って細かく制限できるため、参照や代入が必ずしも参照という動作、代入という動作ではありません。プロパティは関数の場合もあります。()
をつければ関数がそのまま評価(実行)されます。
JavaScript
1var obj = {a: function(x){console.log(x);}}; 2obj.a(2); // obj の a が参照され、その関数が引数 2 で評価される。その結果、2 が表示される。
このようにオブジェクトの後に.
をつけてプロパティの名前を書くことで参照できます。そのプロパティが関数であれば、()
つけることで評価されるという仕組みです。jQueryオブジェクトも同様です。$('.A li').css({'color':'red'});
は$('.A li')
というjQueryオブジェクトのcss
プロパティを参照し、それは関数なので、{'color':'red'}
という引数で評価していると言うことです。
なお、プロパティは.
演算子以外に[]
演算子も使用できます。プロパティ名は任意の文字列をつけることができますが、.
演算子で呼び出せる文字列には一部の記号が使えない等の制限があります。[]
演算子では、その制限はありません。
JavaScript
1var obj = {'a.b': 1}; // '' で囲めば . などの記号も使える。 2console.log(obj.['a.b']); // 'a.b' というプロパティが参照され、結果、1 が表示される。 3console.log(obj.a.b); // 駄目な例。二つ目の . が演算子扱いになるため、上と同じようには動作しない。
おっと、もう一つ、Objectリテラルの話を忘れるところでした。上はプロパティに対するアクセス方法ですが、プロパティの定義方法はいくつか存在します。全てを書くととても長くなりますので、一般的なObjectリテラルの話だけします。
Objectリテラルは{}
で作ることができます。このとき、任意のプロパティを使いできます。書き方はプロパティ名: プロパティ値
です。プロパティ名には任意の文字列を指定できますが、記号等が含まれている場合は''
や""
で囲む必要があります。含まれていなければ''
や""
は省略可能です。プロパティ値も任意の値(データ)を指定できます。関数ももちろん可能です。プロパティ同士は,
で区切ります。
JavaScript
1var obj = { 2 num: 0, // 数値 3 str: 'abc', // 文字列 4 ary: [0, 'abc'], // 配列 5 fun: function(x) { return x * 2; }, // 関数も入る 6 'x:y': 1 // 記号も '' 等で囲めば可能。 7};
{'color':'red'}
という表現は、名前が'color'
、値が'red'
というプロパティを持つObjectのリテラル表現であり、そのObjectを生成しているだけに過ぎません。
###引数と戻り値
関数の書き方とその呼び出し型に関するものです。関数は何らかのデータを入力(input)して、何らかのデータを出力(output)するという動作をします。この入力と出力になるのが、引数と戻り値です。引数と戻り値を示す前に、もう一つ仮引数という概念が必要です。入力するデータが引数だとは言いましたが、入力するデータを決めるのは関数を呼び出す側です。関数の定義をするときに引数が何かという指定はできません。そこで、引数を一時的に入れる入れ物(変数)を用意します。これを仮引数といい、関数内で使えるローカル変数の一種になります。
var f = function(x) { // x が仮引数です。引数の値が x に代入されて、関数内で使えます。 var y = x * 2; return y; // y の値が戻り値です。return文で指定した式の評価結果が戻り値になります。 }; console.log(f(2)); // 関数 f を引数 2 で呼び出し、評価します。 // 定義の中で x には 2 が入り、結果、y が 4 になり、4 が戻り値として戻されます。 // 結果、4 が表示されます。
引数も戻り値も値です。引数や戻り値に変数や式が指定されている場合は、その評価値(変数の値そのもや式なら計算結果)が引数や戻り値になります。仮引数は引数を入れておく変数です。var
を使って変数宣言して、そこに引数の値が入っている場合と同じです。
引数や仮引数は0個にすることも2個以上にすることもできます。戻り値はたった一つしか返せませんが、配列として返す事で実質複数の値を返すこともできます。なお、JavaScriptではreturn文で式を指定しなかった場合、return文そのものを書かなかった場合は、自動的にundefined
という値が戻り値として返されます。**JavaScriptでは戻り値を返さない関数を作ることはできません。**しかし、undefined
は意味のない値のため、return文に式が指定されていない、または、return文そのものが無い関数を(本当は不正確ですが)戻り値が無い関数と表現している場合がありますので、ご注意ください。
上を読んでもよくわからなかった…。となっても安心してください。上の文章は、言語の厳密なところまで説明してるため、ちょっと難しくなっています。JavaScriptをそれなりに理解していない人で無いと難しいと思います。難しいと思ったなら、足りないのはJavaScriptそのものに対する知識です。jQueryだけの書籍やサイトをいくら眺めてもJavaScriptの知識は付きません。自分のサイトでちょこっと使う程度であればそれでも十分なのですが、本格的に使いたいと思うのであれば、まずは、JavaScriptそのものについて学んでください。遠回りのように見えてもこちらの方が近道です。
投稿2016/10/29 03:41
編集2016/10/29 22:42総合スコア21735
0
ベストアンサー
$('.A li').B() はセレクタです。
【7つのサンプルでjQueryを学ぼう!「jQueryが全く分からない人のため」の超初級者向け入門講座 | OZPAの表4】
http://ozpa-h4.com/2012/11/07/jquery-lecture/
【jQuery入門講座】
http://www.jquerystudy.info/
【JavaScriptの基本をサルでもわかるようにまとめた【入門用】 - いつ俺〜いつから俺ができないと錯覚していた?〜】
http://www.ituore.com/entry/javascript-basic
またWebの情報を読む前に、一度本屋で何冊か本を買って読むと今後の理解が進みます。とりあえず最初はわからないことのほうが多いと思いますが、そのうち腑に落ちることも多いはずなのでお勧めします。
JavaScript ならとりあえずこれを通読してみてください、お勧めです。
【JavaScript 第6版 : David Flanagan, 村上 列 : 本 : Amazon.co.jp】
http://www.amazon.co.jp/dp/4873115736
【絶対に読んでおきたい、JavaScriptのおすすめ書籍7冊 - Qiita】
http://qiita.com/axross/items/1fc342c04aa88d48c713
投稿2016/10/29 02:31
総合スコア69407
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/29 05:25
2016/10/29 05:33
2016/10/29 08:35
2016/10/29 11:22
2016/10/29 12:43 編集
2016/10/29 15:04 編集
2016/10/29 22:37
2016/10/30 12:25