質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1242閲覧

いったい何者なのか。

aaaaaaaa

総合スコア501

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/05/16 10:43

編集2017/05/18 10:46

イベントハンドラ内でのthisが参照するオブジェクトは、イベントハンドラを設定した要素自身になります。例えば次のような記述の場合は特に問題は無いでしょう。

document.getElementById("foo").onclick=function() { /*thisは、#fooの要素*/}

しかし、次のような場合、thisとしてlibを期待するかもしれませんが、やはりthisはイベントハンドラを設定した要素になります。

var listener = function() {}; lib.handleClick = function(event) {/*thisはlib?*/}; document.getElementById("foo").onclick = lib.handleClick;

lib.handleClick内でthisとしてlibを参照したい場合は、次のように無名関数でラップして設定します。

document.getElementById("foo").onclick = function(event) { lib.handleClick(event); // => lib.handleClick内でのthisはlibになる。 };

以下略

パーフェクトjavascript271-272頁より

上記の引用文自体は、理解できますが、その中にでてくるlibが何なのか良くわかりません。単純にvarをつけずに宣言した、関数の中でもグローバル変数になってしまうやつなのでしょうか。
それとも組み込み済みの関数というかオブジェクトのlib内のプロパティhandleClickに
無名関数を代入しているだけなのでしょうか。
引用文の数頁前にlibがvar付きで宣言されているのか、と思い確認してみましたがそのような内容もありませんでした。

このlibって何者なのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

当然単体で実行してもエラーになりますので
どこか別のライブラリ的なものが宣言しているとおもいますよ

document.getElementById("foo").onclick=function(){}
も今風な書き方ではないですねaddEventListenerなどで
処理したほうがよいでしょう

投稿2017/05/16 11:30

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

引用元が分からないのでなんとも言えないのですが、恐らく後者(組み込み済みの関数というかオブジェクトのlib内のプロパティhandleClickに無名関数を代入しているだけ)と解釈しました。

varをつけずに宣言する場合、例えば lib = "a"のようなことであれば可能ですが、lib.a = "b"ということになると、libがundefinedのためaプロパティが存在せずエラーになってしまうと考えられるからです。

投稿2017/05/16 10:49

編集2017/05/16 10:50
akabee

総合スコア1947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aaaaaaaa

2017/05/18 10:47

ご回答とご指摘有難うございます。申し訳ありませんでした。修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問