javascriptの呼び出し方

このQ&Aのポイント
  • javascriptの呼び出し方について知りたいです。
  • 知り合いからjavascriptの呼び出し方について依頼を受けました。
  • 例えば、search.loginだけを呼び出す方法を教えてください。
回答を見る
  • ベストアンサー

javascriptの呼び出し方

「下記を組み込んで使って」知り合いより依頼を受けました。 そこで、下記処理を呼び出す場合、 var API = new GETAPI(); とすると、search.login/search.get/search/logout 全部callされる事になります。 それをここに呼び出す方法としてはどうしたらいいかご教授下さい。 例えば、search.loginだけを呼び出したい。 ======================================== (function(){ window.GETAPI = function(){ var search = this; search.login = function(param){ console.log("login"); }; search.get = function(param){ console.log("get"); } search.logout = function(param){ console.log("get"); } return search; } }()); ======================================== 自分のイメージとしては上記処理ではなく、 下記処理で知り合いから頂くものと思ってたので、 ここに呼び出す事は可能だと思っていました。 ========== GETAPI.prototype{ 'login' : function(param){ }, 'get' : function(param){ }, 'logout' : function(param){ } } ========== 基本的なjavascriptの質問になってしまいますが、 宜しくお願い致します。

  • prr4e
  • お礼率48% (66/136)

質問者が選んだベストアンサー

  • ベストアンサー
  • byDesign
  • ベストアンサー率75% (45/60)
回答No.1

>全部callされる事になります。 functionの定義をしているだけで、実行されません >例えば、search.loginだけを呼び出したい。 var API = new GETAPI(); API.login(); で呼べます。

prr4e
質問者

お礼

回答有難うございます。 ではデバッカーでbreak pointを指定すると、 全部通るのは、単純に定義するだけって事でしょうか。 確かに内部の処理側で、console.logを通るのはloginのみになりました。 もしそうなら通ってると思ってたのは私の認識違いになります。

その他の回答 (1)

  • byDesign
  • ベストアンサー率75% (45/60)
回答No.2

var xxx = function(){console.log('piyo);}; xxx変数に関数を代入。 関数を実行する場合xxx(); これがわかれば、したもいっしょです。 search.login = function(param){  console.log("login"); }; search.loginプロパティに関数を代入 呼び出すときはsearch.login(); searchにはthisで、new GETAPI();でインスタンスを作れば良いだけです。

prr4e
質問者

お礼

ありがとうございます。 解決する事ができました。

関連するQ&A

  • javascriptのコードについて

    以下のコードなのですが、 エンクロージャー関数の ローカル変数hogeをさらに、エンクロージャー内部で定義された 関数ででクロージャーとして保持させたいメソッドのコードですが var Method = function (){ var hoge = "初期値"; var getter = function (){ return hoge; } var setter = function (param){ hoge = param; return hoge; } return {"set" : setter,"get" : getter} } var obj = Method(); console.log(obj); console.log(obj . get()); obj.set("初期値変更"); console.log(obj.get()); obj . set("更に変更"); console.log(obj.get()); この場合、メソッドの返り値として、一般的な文献に乗っている関数(関数オブジェクト)を返すのではなく オブジェクトリテラルとして返しています。 この場合でも、動きとしてはクロージャーの動きをしているのでhogeという変数の保持はできているっぽいんですが クロージャーって関数内で定義された関数であれば、どういう返り値の返し方でも クロージャーになるのですかね? また、この方法は、一般的にjsで関数コンストラクタ呼び出しをしてインスタンスを作る際privateメンバを実現する方法として紹介されていますが、 これはクロージャーとして生成するたんびに内部の変数を保持するためメモリ食い虫になるらしいのですが まず間違いなく、このクラス(便宜上そう呼びます)のインスタンスはひとつしかつくることはない!!という仕様だとしても いけないのでしょうか? というかもう現状javascripのバッドノウハウ的なものになっているのでしょうか?

  • Javascript について質問です

    var tired=true; var bored=false; var nap = function() { if(tired || bored){ console.log("OK"); } else{ console.log("else"); } }; 上記のコードを書いた際、下記の実行結果となり、OKが表示されません。 どなたか原因が分かる方がおりましたら、教えてください。 else

  • jQueryの仕組みについて質問です

    お世話になります。現在jQueryのコードを読んでいるのですが、どうしてもわからないところがあります。 jQuery1.11.1の2774行目、jQuery.merge(...)と自分自身を呼び出していますが、これはjQuery中でどのような処理をして実現しているのでしょうか?jQuery.merge = function(){...};としているわけでもないのに呼び出せているのが理解できません。 mergeメソッド自体は、450行目、jQuery.extend内で定義されているようです。 以下簡易化したjQueryです。 var window = this; // ブラウザ以外で実行する場合のみ必要 (function(){ jQuery = window.jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); }; jQuery.fn = jQuery.prototype = { hello: function(){ console.log("hello from fn!"); // ここをjQuery.logと書けるようにしたい } }; jQuery.extend = jQuery.fn.extend = function() {}; jQuery.extend({ log: function(msg){ console.log(msg); } }); init = jQuery.fn.init = function( selector, context ) { console.log("Hello"); }; init.prototype = jQuery.fn; // ここをjQuery.logと書けるようにしたい } )(); jQuery().hello();

  • setTimeoutのthis参照について

    prototypeメソッドの中でsetTimeout関数を使用したところ、thisで自身の関数を参照しなくなりました。setTimeoutの挙動についてぐぐってみたのですが、いまいちsetTimeoutを使用したときのスムーズな記述方法がわかりません。 ******************************** var hoge=function(){ this.myName="ほげ"; } hoge.prototype={ init:function(){ setTimeout(function(){ hoge.prototype.displayName(); // ★(1)setTimeout関数の中でのメソッドの適した呼び出し方は? // ↑の記述でも呼び出せるけど、間違ってる気がする。。 },1000) }, displayName:function(){ // ★(2)ここでhogeオブジェクトのmyNameプロパティを参照するにはどう記述すれば良いのか? //console.log(this.myName); //↑setTimeoutを使ったのでthis参照はwindowオブジェクトになっているから違う //console.log(hoge.myName); →undefinedを返す } } window.onload=function(){ var a=new hoge(); a.init(); } ******************************** 上記のようなprototype関数を使用したときのスムーズな記述方法を教えていただけませんでしょうか。 知りたいのは下記2点です。 ★(1)prototypeメソッドを使用したとき、setTimeout関数の中でのメソッドの適した呼び出し方は? ★(2)setTimeout関数内で呼び出したメソッドから、自身のオブジェクトのプロパティを参照するにはどう記述すれば良いのか? 初心者なので説明が下手だったり、質問内容で間違った記述があるかもしれません。 質問内容で問題がありましたらご指摘いただけると助かります。

  • Javascript について質問です

    for in 文について質問です。(実行結果は一番下にあります。) 本当に分からなくて困っています。質問自体長く、お見苦しい点も多いと思いますが、皆様の力が必要なので、分かる方がおりましたら助けてくださると本当にありがたいです。 下記のように、friendsというオブジェクトを定義しました。 いまいち、オブジェクトの意味が理解できていないので、表層的なことしか理解できておりません。下記のプログラムは動きましたが、codeacademyというサイト上で動かしているので、少し実行結果が変わってしまい、よくわかりません。 質問(1):そこで質問なのですが、下記(真下)のプログラムは、どのような動きをしているのでしょうか。これは単純に、steve,jobsを出力するためのプログラムでしょか? var list= function(friends){ for(var i in friends){ console.log(i); } } 質問2;こちらの関数についてですが、nameを引き渡していますが、プログラム上には何も定義していないのに、動きました。なぜ動くのでしょうか? var search = function(name) { for (var key in friends) { if(friends[key].firstName== name){ console.log(friends[key]); return friends[key]; } } }; 質問3; search 関数の中で、for in 文の中にiを定義していますが、これは、単純にプロパティの個数文、for文を回すものと理解してもよろしいでしょうか。 私が気になっているのは、friends[i]となっても、friendsオブジェクトでそのような変数を定義していないので、マッチしないと思い、いまいち理解しきれません。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー var friends={ steve: { firstName: "Steve", lastName: "jobs", number: "090", address: ["Apple fundor"] }, bill: { firstName: "Bill", lastName: "Gates", number: "080", address: ["Microsoft fundor"] } }; var list= function(friends){ for(var i in friends){ console.log(i); } } var search = function(name) { for (var key in friends) { if(friends[key].firstName== name){ console.log(friends[key]); return friends[key]; } } }; ーーーーーーーーーーーーーーーーーーーーー実行結果ーーーーーーーーーーーー { firstName: 'Steve', lastName: 'jobs', number: '090', address: [ 'Apple fundor' ] } { firstName: 'Steve', lastName: 'jobs', number: '090', address: [ 'Apple fundor' ] } { firstName: 'Bill', lastName: 'Gates', number: '080', address: [ 'Microsoft fundor' ] }

  • console.logでインクリメントのタイミング

    下記で、hogeはなぜ2にならないのでしょうか? var hoge=1; console.log(hoge++); ・再度試せば2になるのですが、 var hoge=1; console.log(hoge++); console.log(hoge); ・引数指定しているのに、どうして一旦処理が終わった後に走るのか理解できません console.log(hoge++); ・色々試してみたのですが、どれも1です var hoge=1; console.log((hoge++)); var hoge=1; console.log((hoge)++); 後ろに++付けたときの挙動について教えてください

  • javascript Param

    * @param {string} coding1 * @param {string} coding2 * @param {string} coding3 */ var App = function( coding1 , coding2 , coding3 ) { console.log(source_code); $.App.call(this, hospital_code, terminal_code, source_terminal_code); this._client.add('lodging_reservations'); /** @private {array<object>} this._lodging_reservations = []; /** @private {object} this._lodging_reservation_setting = {}; }; 今訳あって他人の作ったJavascriptのソースコードを熟読するという作業を行っているのですが 1行目~3行目の「 @param ~」って5行目の変数Appの関数に引数として渡されてるのでしょうか? 馬鹿な質問でスミマセン。

  • JavaScriptって何者だ。

    参考までにソースを見ることができました。 HTMLで書かれているのは解りそうな気がしますが、JavaScriptは一生理解できないような気がします。メチャクチャ複雑でゴチャゴチャしています。 これって人間業じゃないような気がします。 マダ、PHPやPerl等も覚えようと思っていますが、JavaScriptはメチャクチャ 難しそうです。 WEBデザイナーの方なんか余程勉強したのでしょうね。 お先真っ暗です。 どうやって勉強するのかアドバイスをください。 宜しくお願い申し上げます。 n[e].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<e.length;o++)r(e[o]);return r}({1:[function(t,n,e){function r(t){try{s.console&&console.log(t)}catch(n){}}var o,i=t("ee"),a=t(15),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,n,e){r(e.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,n){return t}).join(", ")))},{}],2:[function(t,n,e){function r(t,n,e,r,o){try{d?d-=1:i("err",[o||new UncaughtException(t,n,e)])}catch(s){try{i("ierr",[s,c.now(),!0])}catch(u){}}return"function"==typeof f&&f.apply(this,a(arguments))}function UncaughtException(t,n,e){this.message=t||"Uncaught error with no additional information",this.sourceURL=n,this.line=e}function o(t){i("err",[t,c.now()])}var i=t("handle"),a=t(16),s=t("ee"),c=t("loader"),f=window.onerror,u=!1,d=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(l){"stack"in l&&(t(8),t(7),"addEventListener"in window&&t(5),c.xhrWrappable&&t(9),u=!0)}s.on("fn-start",function(t,n,e){u&&(d+=1)}),s.on("fn-err",function(t,n,e){u&&(this.thrown=!0,o(e))}),s.on("fn-end",function(){u&&!this.thrown&&d>0&&(d-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})},{}],3:[function(t,n,e){t("loader").features.ins=!0},{}],4:[function(t,n,e){function r(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var o=t("ee"),i=t("handle"),a=t(8),s=t(7),c="learResourceTimings",f="addEventListener",u="resourcetimingbufferfull",d="bstResource",l="resource",p="-start",h="-end",m="fn"+p,w="fn"+h,v="bstTimer",y="pushState",g=t("loader");g.features.stn=!0,t(6);var b=NREUM.o.EV;o.on(m,function(t,n){var e=t[0];e instanceof b&&(this.bstStart=g.now())}),o.on(w,function(t,n){var e=t[0];e instanceof b&&i("bst",[e,n,this.bstStart,g.now()])}),a.on(m,function(t,n,e){this.bstStart=g.now(),this.bstType=e}),a.on(w,function(t,n){i(v,[n,this.bstStart,g.now(),this.bstType])}),s.on(m,function(){this.bstStart=g.now()}),s.on(w,function(t,n){i(v,[n,this.bstStart,g.now(),"requestAnimationFrame"])}),o.on(y+p,function(t){this.time=g.now(),this.startPath=location.pathname+location.hash}),o.on(y+h,function(t){i("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),f in window.performance&&(window.performance["c"+c]?window.performance[f](u,function(t){i(d,[window.performance.getEntriesByType(l)]),window.performance["c"+c]()},!1):window.performance[f]("webkit"+u,function(t){i(d,[window.performance.getEntriesByType(l)]),window.performance["webkitC"+c]()},!1)),document[f]("scroll",r,{passive:!0}),document[f]("keypress",r,!1),document[f]("click",r,!1)}},{}],5:[function(t,n,e){function r(t){for(var n=t;n&&!n.hasOwnProperty(u);)n=Object.getPrototypeOf(n);n&&o(n)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,n){return t[1]}var a=t("ee").get("events"),s=t(18)(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";n.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,n){var e=t[1],r=c(e,"nr@wrapped",function(){function t(){if("function"==typeof e.handleEvent)return e.handleEvent.apply(e,arguments)}var n={object:t,"function":e}[typeof e];return n?s(n,"fn-",null,n.name||"anonymous"):e});this.wrapped=t[1]=r}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],6:[function(t,n,e){var r=t("ee").get("history"),o=t(18)(r);n.exports=r,o.inPlace(window.history,

  • 最後に()が付いていない内側の関数を外から呼ぶ方法

    下記状態の時、obj内容を一切変更することなく、console.log("a")を実行することは出来ない、という理解で合っているでしょうか? ・最後に()演算子がないので、内側のgoo関数を実行することが出来ない ・外側のportalで、内側のgoo関数を呼び出していれば実行できるがその記述もない この場合、gooのvarは全く意味がない? var obj = {  portal : function() {   var goo = function(){    console.log("a");   }  } } var obj = {  portal : function() {   goo = function(){    console.log("a");   }  } } ・obj.portal().goo() … × ・(obj.portal()).goo() … ×

  • javascriptでオブジェクトのメソッドを使う

    JavaScriptでnewでオブジェクト化したクラス(?)のメソッド、フィールドを利用する方法を教えて下さい。 javascriptにもオブジェクト化という考え方があると聞いたのですが、 例えば、Javaでいうsetter getterのようなメソッドを作り、使用することはできるのでしょうか? 下記のようなコードを実行したところ Uncaught TypeError: Object #<mousePosi> has no method 'setPara' というエラーが出てしまい、setParaというメソッドはない。と言われてしまいます。 しかし、mousePosi()をオブジェクト化することはできているようなので、 setParaとgetParaを使えるのではないかとおもいました。 どなたかアドバイス下さい。お願いします。 ------------------------------------------------------------------------------------------------- (function LineMain() { console.log("マウスの位置座標を表示"); // console.log("X座標=" + mymouse.x + ",Y座標=" + mymouse.y); //マウスムーブでeventControlを呼び出し addEventListener("mousemove", eventControl, false); function eventControl(event) { var event = event; var myMousePosi = new mousePosi(); myMousePosi.setPara(event); // console.log("X座標=" + obj.getMouse().x + ",Y座標=" + obj.getMouse().y); } function mousePosi() { var paraMouse = { x : 0, y : 0 }; function setPara(event) { this.paraMouse.x = event.x; this.paraMouse.y = event.y; } function getPara() { return this.paraMouse; } } })();

専門家に質問してみよう