私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.119 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>548の訂正
(function(){
function Person(){
console.log(this); ・・・ (1)
}
var a = new Person();
var b = Person();
console.log(a); ・・・(2)
console.log(b); ・・・(3)
}())
出力結果
Person {} ・・・ (1) new Person()
Window ・・・ (2)
Person {} ・・・ (1) Person()
undefined ・・・ (3)
(function(){
function Person(){
console.log(this); ・・・ (1)
}
var a = new Person();
var b = Person();
console.log(a); ・・・(2)
console.log(b); ・・・(3)
}())
出力結果
Person {} ・・・ (1) new Person()
Window ・・・ (2)
Person {} ・・・ (1) Person()
undefined ・・・ (3)
newの付け忘れとかでこうなった場合、
>obj.foo(1, 2, 3) という呼び出し方をすれば、 . の左側が第0引数になる。
だけの解説だとわかりにくいんじゃないかなと思ったんだよね
>obj.foo(1, 2, 3) という呼び出し方をすれば、 . の左側が第0引数になる。
だけの解説だとわかりにくいんじゃないかなと思ったんだよね
>>548の再訂正
(function(){
function Person(){
console.log(this); ・・・ (1)
}
var a = new Person();
var b = Person();
console.log(a); ・・・(2)
console.log(b); ・・・(3)
}())
出力結果
Person {} ・・・(1) new Person()
Window ・・・(1) Persion()
Person {} ・・・(2) aの中身
undefined ・・・(3) bの中身
(function(){
function Person(){
console.log(this); ・・・ (1)
}
var a = new Person();
var b = Person();
console.log(a); ・・・(2)
console.log(b); ・・・(3)
}())
出力結果
Person {} ・・・(1) new Person()
Window ・・・(1) Persion()
Person {} ・・・(2) aの中身
undefined ・・・(3) bの中身
>>552
その他の説明のほうが、ルールが複雑だと思うけど?
[ここ] foo(1, 2, 3)
↓
foo([ここ], 1, 2, 3)
こう解釈されるってだけ。
obj.foo(1,2,3) → foo(obj, 1, 2, 3)
new foo(1,2,3) → foo(新規作成, 1, 2, 3)
foo(1,2,3) → foo(なし, 1, 2, 3)
この基本系+第0引数を自由に設定できるcallとapplyが存在する。
実はPerlも似たような解釈をする。
この見えない第0引数のthisっていうのは、昔のTurboC++3.0のマニュアルに
C++の動きの解説としてのってたんだよな。
それしってるからJavaScriptもPerlも内部的には同じように処理してるんだって思ってる。
その他の説明のほうが、ルールが複雑だと思うけど?
[ここ] foo(1, 2, 3)
↓
foo([ここ], 1, 2, 3)
こう解釈されるってだけ。
obj.foo(1,2,3) → foo(obj, 1, 2, 3)
new foo(1,2,3) → foo(新規作成, 1, 2, 3)
foo(1,2,3) → foo(なし, 1, 2, 3)
この基本系+第0引数を自由に設定できるcallとapplyが存在する。
実はPerlも似たような解釈をする。
この見えない第0引数のthisっていうのは、昔のTurboC++3.0のマニュアルに
C++の動きの解説としてのってたんだよな。
それしってるからJavaScriptもPerlも内部的には同じように処理してるんだって思ってる。
多分初心者はこのthisはなんなんだー?って思うだろうけどさ、
function foo() {
function bar() {
function baz() {
console.log(this); ←このthis
}
}
}
第0引数を補完してやって、こうすれば
function foo(this) {
function bar(this) {
function baz(this) {
console.log(this); ←このthis
}
}
}
thisはbazの第0引数として渡されたもの、
つまりbazの呼び出し方で決まるってわかるでしょ?
function foo() {
function bar() {
function baz() {
console.log(this); ←このthis
}
}
}
第0引数を補完してやって、こうすれば
function foo(this) {
function bar(this) {
function baz(this) {
console.log(this); ←このthis
}
}
}
thisはbazの第0引数として渡されたもの、
つまりbazの呼び出し方で決まるってわかるでしょ?
addEventListenerとかjQueryのonとかで
var a = 1; ・・・(1)
console.log(this); ・・・(2)
$(element).on('click', function() {
console.log(a); // (1)と同じ
console.log(this); // (2)とは違う。
})
thisどうなってるんだ!?っていうのも
var a = 1; ・・・(1)
console.log(this); ・・・(2)
$(element).on('click', function(this, a) {
console.log(a); // (1)とは違う。
console.log(this); // (2)とは違う。
})
こう考えればいい。ついでに無名関数の引数にaを追加したが
こうした場合、引数のaで(1)が隠される。これはだれでも理解してると思うが、
このaと同じことが、thisに関しては常に成立している。なぜなら見えない第0引数が存在するから。
で、thisとaが実際に無名関数内でどうなるかは、呼び出す側の仕様で何を渡すかで決まる。
var a = 1; ・・・(1)
console.log(this); ・・・(2)
$(element).on('click', function() {
console.log(a); // (1)と同じ
console.log(this); // (2)とは違う。
})
thisどうなってるんだ!?っていうのも
var a = 1; ・・・(1)
console.log(this); ・・・(2)
$(element).on('click', function(this, a) {
console.log(a); // (1)とは違う。
console.log(this); // (2)とは違う。
})
こう考えればいい。ついでに無名関数の引数にaを追加したが
こうした場合、引数のaで(1)が隠される。これはだれでも理解してると思うが、
このaと同じことが、thisに関しては常に成立している。なぜなら見えない第0引数が存在するから。
で、thisとaが実際に無名関数内でどうなるかは、呼び出す側の仕様で何を渡すかで決まる。
確かにthisだけだと「見えない第0引数」という解説のほうが簡潔でわかりやすいね
この原則を認識してると>>541はちょっと筋が悪い解説にみえる
この原則を認識してると>>541はちょっと筋が悪い解説にみえる
種類が問題なわけじゃないからな
任意に設定される、というところが一番重要
任意に設定される、というところが一番重要
(function(){
function f(a, b){
return b[0] > b[1];
}
var s = f(function(x) { return (a, b); }, [0, 5]);
console.log(s)
}())
これってクロージャになってますか?
function f(a, b){
return b[0] > b[1];
}
var s = f(function(x) { return (a, b); }, [0, 5]);
console.log(s)
}())
これってクロージャになってますか?
>>561
悔しいのうww
悔しいのうww
thisは恣意的に設定されてるだけって言ってるじゃん
そう決められてるからそうなるだけのこと
そう決められてるからそうなるだけのこと
まあでも strictモードのundefinedにするってのが理にかなってはいるね
ここ.aaaa(); のここの部分が無いわけだから
ググればわかるけど、非strictモードではthisがnullやundefinedだったばあい
グローバルオブジェクトに変換しているとのこと
(>>566で aaaaa.call(null); ってするとwindowが表示される)
ここ.aaaa(); のここの部分が無いわけだから
ググればわかるけど、非strictモードではthisがnullやundefinedだったばあい
グローバルオブジェクトに変換しているとのこと
(>>566で aaaaa.call(null); ってするとwindowが表示される)
思い込みでおかしい宣言する人は仕様書を一から熟読するべき
決まってるものをおかしいいわれても、おまえがおかしいとしか言いようがない
決まってるものをおかしいいわれても、おまえがおかしいとしか言いようがない
1)Number.isNaN(100) // false
2)Number.isNaN("abc") // false
3)isNaN(100) // false
4)isNaN("abc") // true
なんで2番めのがfalseになるんですか?
2)Number.isNaN("abc") // false
3)isNaN(100) // false
4)isNaN("abc") // true
なんで2番めのがfalseになるんですか?
文字列なのにNaNになると思いました
4がtrueなのに何故2はfalseになるのかよくわかりません
4がtrueなのに何故2はfalseになるのかよくわかりません
>>573
Number.isNaN と isNaN が同じ機能を提供していると認識違いしてるんだろ
思い込みで決め付ける前に「自分が思う前提が間違っているかもれない」と捉え、自分から調べる努力をしろ
上の this の質問もそうだが、自分の考えが正しいと信じ込んでる分、いくら仕様だと説明しても理解することもしない、大変性質が悪い
自分で調べた上で「~では~と書かれており、自分は~と認識してるんですが、合ってますか?」と質問するぐらいでちょうどいい
Number.isNaN()
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan
isNaN()
http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isnan-number
Number.isNaN と isNaN が同じ機能を提供していると認識違いしてるんだろ
思い込みで決め付ける前に「自分が思う前提が間違っているかもれない」と捉え、自分から調べる努力をしろ
上の this の質問もそうだが、自分の考えが正しいと信じ込んでる分、いくら仕様だと説明しても理解することもしない、大変性質が悪い
自分で調べた上で「~では~と書かれており、自分は~と認識してるんですが、合ってますか?」と質問するぐらいでちょうどいい
Number.isNaN()
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan
isNaN()
http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isnan-number
>>577
どうも^^
どうも^^
Chrome,Firefox,Opera,IE9以上なら配列の最後にカンマを残してもトラブルは起きないですか?
Windows持ってないからOperaとIE試せる方おしえてkづあしあ
Windows持ってないからOperaとIE試せる方おしえてkづあしあ
var Class = function(){
var klass = function(){
this.init.apply(this, arguments);
};
klass.prototype.init = function(){};
// プロトタイプにアクセスするためのショートカット
klass.fn = klass.prototype;
// クラスにアクセスするためのショートカット
klass.fn.parent = klass;
// クラスプロパティを追加します
klass.extend = function(obj){
var extended = obj.extended;
for(var i in obj){
klass[i] = obj[i];
}
if (extended) extended(klass);
};
// インスタンスプロパティを追加します
klass.include = function(obj){
var included = obj.included;
for(var i in obj){
klass.fn[i] = obj[i];
}
if (included) included(klass);
};
return klass;
};
var klass = function(){
this.init.apply(this, arguments);
};
klass.prototype.init = function(){};
// プロトタイプにアクセスするためのショートカット
klass.fn = klass.prototype;
// クラスにアクセスするためのショートカット
klass.fn.parent = klass;
// クラスプロパティを追加します
klass.extend = function(obj){
var extended = obj.extended;
for(var i in obj){
klass[i] = obj[i];
}
if (extended) extended(klass);
};
// インスタンスプロパティを追加します
klass.include = function(obj){
var included = obj.included;
for(var i in obj){
klass.fn[i] = obj[i];
}
if (included) included(klass);
};
return klass;
};
ステートレスJavaScriptにこのようなコードがあります
extendはクラス拡張、includeはプロトタイプ拡張です
しかしプロトタイプ拡張=includeがピンと来ません
どっちもextendだと区別できないので別の言葉にしてるだけなら、
extendPorototypeとかにした方がいいんじゃないかと思うのですが、どうなんですか?
extendはクラス拡張、includeはプロトタイプ拡張です
しかしプロトタイプ拡張=includeがピンと来ません
どっちもextendだと区別できないので別の言葉にしてるだけなら、
extendPorototypeとかにした方がいいんじゃないかと思うのですが、どうなんですか?
複数条件(100件ほど)での文字列全文置換がしたいです。
文字列置換自体はreplaceで良いようなのですが、条件の指定はどうするのが良いでしょうか。
文字列置換自体はreplaceで良いようなのですが、条件の指定はどうするのが良いでしょうか。
>>586
分からないなら黙っとけや
分からないなら黙っとけや
>>583の件ですが、
extended、includedというコールバックを指定していますが
これだとコールバックまでextendやincludeされますね
コールバックが追加される必要はないので、別引数で渡した方がいいですよね・・
それとも何かメリットあるんでしょうか?
extended、includedというコールバックを指定していますが
これだとコールバックまでextendやincludeされますね
コールバックが追加される必要はないので、別引数で渡した方がいいですよね・・
それとも何かメリットあるんでしょうか?
レス番透視は自分で馬鹿でーすって言ってるようなものだからやめた方がいいぞ
C級以下の知性の持ち主がやること
C級以下の知性の持ち主がやること
>>335の件ですが、
ステートフルJavaScriptに
あるオブジェクトのプロパティを取得しようとすると、
まずそのオブジェクトがローカルに保持しているプロパティが検索されます。
該当するプロパティが存在しない場合は、
そのオブジェクトのプロトタイプオブジェクトが保持しているプロパティが検索され、
そこでも存在しない場合はプロトタイプオブジェクトのプロトタイプオブジェクトが検索されます。
とありました。
つまり__proto__はプロトタイプオブジェクトと言えそうです。
obj.prototypeすなわちプロトタイププロパティ、≠プロトタイプオブジェクト
なところが、
JavaScriptにおける継承の理解を困難にしている大きな原因ではないでしょうか
ステートフルJavaScriptに
あるオブジェクトのプロパティを取得しようとすると、
まずそのオブジェクトがローカルに保持しているプロパティが検索されます。
該当するプロパティが存在しない場合は、
そのオブジェクトのプロトタイプオブジェクトが保持しているプロパティが検索され、
そこでも存在しない場合はプロトタイプオブジェクトのプロトタイプオブジェクトが検索されます。
とありました。
つまり__proto__はプロトタイプオブジェクトと言えそうです。
obj.prototypeすなわちプロトタイププロパティ、≠プロトタイプオブジェクト
なところが、
JavaScriptにおける継承の理解を困難にしている大きな原因ではないでしょうか
>>584は"ステートレス"JavaScriptを目指してるんだろうから、extendeもincludeも理解しなくていいよ
__proto__・・そのオブジェクトのプロトタイプオブジェクト
protytpe・・その関数オブジェクトのインスタンスのプロトタイプオブジェクト
かな
protytpe・・その関数オブジェクトのインスタンスのプロトタイプオブジェクト
かな
>>597
意味不明
意味不明
>>595
相手はお前をイラっとさせようと思ってるんだろうから、そんな沸点が低いと思う壺だろw
相手はお前をイラっとさせようと思ってるんだろうから、そんな沸点が低いと思う壺だろw
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.110 + (1001) - [97%] - 2013/10/13 14:01
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [97%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.116 + (1002) - [97%] - 2014/7/1 0:45
- + JavaScript の質問用スレッド vol.115 + (1001) - [97%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.114 + (1001) - [97%] - 2014/5/3 10:45
- + JavaScript の質問用スレッド vol.112 + (1001) - [97%] - 2013/11/27 16:46
- + JavaScript の質問用スレッド vol.111 + (1001) - [97%] - 2013/11/4 6:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.125 + (1001) - [95%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.124 + (1001) - [95%] - 2015/7/16 1:30
トップメニューへ / →のくす牧場書庫について