トップページ⇒php
244コメント86KB

サーバーサイドJavaScript総合

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/05/15(木) 16:22:12ID:omRBHTnI
とか見つからなかったので立てさせてもらいました
クライアントJavaScript/JScriptについてはWeb制作板へどうぞ。

とりあえず俺は今頃Jaxerで遊んでみてます。
AJAJAって無くなったのかな? 公式らしきURLがwikipedia転送になってますね
その他にもいろいろ実装あるので、>>2以降で軽くリンクとか書いて行きます
0222nobodyさん2012/10/02(火) 09:33:06.14ID:???
括弧の対応が取れてないのはともかく、
上のthisと下のthisは同じものにならないんじゃないの?
0223nobodyさん2012/10/02(火) 12:16:09.29ID:???
ああ、本当だw
入れ子の無名関数のthisはどこにも参照されていない筈
0224nobodyさん2012/10/02(火) 16:26:17.64ID:???
>>222
>>223
そうなの?
C#ではこういう書き方ができたから、通ると思ったんだが…
JavaScriptだとダメなの?
0225nobodyさん2012/10/02(火) 17:05:54.11ID:???
>>224
>>221を書いた人なの?そもそもjsのプログラムとして完成させてくれないと何をしたいのかわからん
これこのままじゃ、fooって関数を宣言してるだけだよね?GetRoomListは宣言してるけど使ってないし何なの?
02262212012/10/02(火) 17:08:46.50ID:???
>>225
すまん
肝心な部分が抜けてた
function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
}
function GetRoomList(callback){
var stream = fs.createReadStream("foo.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
})
});
}
GetRoomList();
}
0227nobodyさん2012/10/02(火) 17:35:07.60ID:???
いやだからさwまずは文法エラーが出ないようにしろよw
括弧の対応とれてないだろうがw

無理やり文法エラーなおして、this.Add()の関数になにか適当な処理いれて、
最後にfoo()を呼び出すようにすれば俺の環境だとちゃんと動くぞ

上のthisと下のthisに違うものが入るかと思ったが、両方とも同じグローバルオブジェクトがはいるんだな
forEachの仕様をよく理解してなかったわ
02282212012/10/02(火) 19:41:47.18ID:???
var lazy = require("lazy");

var fs = require("fs");

function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
console.log(line);
}
function GetRoomList(callback){
var stream = fs.createReadStream("roomlist.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
});
}
GetRoomList();
}

$test = new foo();
文法エラーを修正したが、こんなエラーが出る
0229nobodyさん2012/10/02(火) 19:48:55.73ID:???
TypeError: Object #<Object> has no method 'Add'
at C:\Users\xxx\Documents\WebChat\test.js:17:9
at EventEmitter.self.forEach (C:\Users\xxx\Documents\WebChat\node_modules
\lazy\lazy.js:62:13)
at EventEmitter.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\
lazy\lazy.js:46:19)
at EventEmitter.emit (events.js:93:17)
at self.bucket.yield (C:\Users\xxx\Documents\WebChat\node_modules\lazy\la
zy.js:152:18)
at Function.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\lazy
\lazy.js:186:21)
at self.bucket (C:\Users\rirufa\Documents\WebChat\node_modules\lazy\lazy.js:
158:21)
at EventEmitter.emit (events.js:93:17)
at ReadStream._emitData (fs.js:1365:10)
at afterRead (fs.js:1347:10)
0230nobodyさん2012/10/02(火) 19:55:27.08ID:???
fooは普通の関数じゃなくてコンストラクターなのかw
それだと上のthisと下のthisは違ってしまうからうごかんわw

this.Add = function(line){
の上に
var self = this;
とかいれて、
下のthisをselfに置き換えればとりあえず動くよw
02312212012/10/02(火) 19:59:50.02ID:???
ありがとう
それでやったら動いた
0232nobodyさん2012/10/02(火) 20:36:44.53ID:???
このforEachはArray.prototype.forEachかと思ったら、lazyモジュールが提供するforEachメソッドなのか
javascriptの場合、コールバック関数内でthisが何になるかは、コールバックを渡した関数の仕様に依存することになるから
仕様がはっきりしない場合はthisは使えないと思ったほうがいいね
0233nobodyさん2012/10/02(火) 22:58:43.49ID:uRHsxp7z
varで変数宣言しないといけないのが、このスクリプト言語のムカつくところ。
0234nobodyさん2012/10/02(火) 23:24:35.04ID:???
varで宣言も別に悪くないと思うけどな。決めの問題で。
Pythonみたく代入した場所でスコープ決まったり、Rubyみたく変数名の表記で決まったり、それぞれルールがあるだけじゃね?
0235nobodyさん2012/10/02(火) 23:39:57.49ID:???
クソだと思うのはそれでいいから、二度と来ないでね
0236nobodyさん2012/10/06(土) 23:43:38.61ID:???
なんでJavaScriptだけthisの意味が違うのが謎だ
C#やC++とかだとthisはオブジェクトのインスタンス自身を表すことになってるのに、なぜかJavaScriptだけ別物
0237nobodyさん2012/10/07(日) 07:01:11.25ID:???
頭固いですね
0238nobodyさん2012/10/07(日) 17:10:29.74ID:???
Javascripのthisのスコープが変るのは、
オブジェクト生成後にあとからメソッドが追加できるという自由すぎる言語特性ゆえ、
thisのスコープをJavaなんかと同様にしてしまうと、弊害があると考えられたから。
これ結構常識だと思うのだけど...
0239nobodyさん2012/10/13(土) 13:32:24.29ID:???
meteor、設計思想が全然違うのな。
サンプルのleaderboard見てクラクラきた。
慣れると楽なのかな?
0240nobodyさん2012/10/20(土) 10:25:51.21ID:nMqOZ8tI
twitterからjqueryを使ってJSONデータを抽出したいんですけれど、なかなか思うように行きません。まずコードを記します。
// コールバック関数
略
$("#twi").append('<li><div class="icon"><a href="https://twitter.com/'+ val.from_user +'"><img width="60px" height="60px" alt="'+ val.from_user +'" src=" ' +
val.profile_image_url +'" /></a></div>'+ '<div class="text"><dl><dt><strong>ユーザー名</strong>: ' + val.from_user +
'<br/><strong>投稿時間(GMT)</strong>: ' + val.created_at +
'</dt><dd><strong>投稿文</strong>:<pre> '+ val.text +'</pre></dd></dl></div></li>');
//GMTをどうにか日本時間にしたい
});
略
//アクセス先のURL
jQuery.getJSON('http://search.twitter.com/search.json?callback=?',
//サーバーに送るデータ
{q:'さとし+OR+ピカチュウ',//複雑なnot検索がしたい
//AND検索は、クエリを「+」(スペース)で繋ぐ
//OR検索は、クエリを「+OR+」で繋ぐ
//NOT検索は、除外したいクエリの前に「-」をつける
//フレーズ検索は、フレーズを「"」で囲む
略

ここにおいて、まずGMTを日本時間(JPN)に直すにはどうしたらいいのか。
そして複雑なNOT検索(例えばAという単語について、
BとCという単語が付属しているものを除外する。また単独のフレーズとして
DとFという単語を除外する。)をするにはどうしたらいいのか。
以上の2点について教えてください!
0241nobodyさん2012/10/20(土) 10:29:48.62ID:nMqOZ8tI
補足です。時間は
Sat, 20 Oct 2012 01:27:30 +0000
という表記を
2012年10月20日(土) 10:27
としたいです。
0242nobodyさん2012/10/20(土) 11:05:33.73ID:nMqOZ8tI
すいません。クライアントサイドのスレと間違えました
0243nobodyさん2012/12/25(火) 02:53:11.59ID:???
相変わらず過疎ってるな
ちょい前にNodeの1.0ブランチできたってね
0244nobodyさん2012/12/25(火) 13:51:52.77ID:???
へー
■ このスレッドは過去ログ倉庫に格納されています