Skip to content

Instantly share code, notes, and snippets.

@shinsuke79
Created November 27, 2012 22:59
Show Gist options
  • Save shinsuke79/80f36784fc0598aa6123 to your computer and use it in GitHub Desktop.
Save shinsuke79/80f36784fc0598aa6123 to your computer and use it in GitHub Desktop.
javascriptのまとめ
// 基本型: number,boolean,string
// 参照型: object,array,function
/**
* jsによるオブジェクト指向には、
* ・オブジェクトリテラルを使った方法
* ・コンストラクタ関数を使った方法
* がある。
*/
// ===============================================================
/***** 1.コンストラクタ関数を使った方法 *****/
// コンストラクタ
function People(name, age){
this.name = name;
this.age = age;
}
// クラス変数を登録
People.kind = "人間";
// クラスメソッド
People.getSex = function(){
return ["man","woman"];
};
// インスタンスメソッド
People.prototype.toString = function(){
return this.name + str(this.age);
};
// 継承クラス
function Student(id,name,age){
this.constructor(name, age);
this.id = id;
}
// 継承関係の登録
Student.prototype = new People();
// オブジェクトの生成
var people1 = new People("たいぞう",20);
var people2 = new People("こうた",35);
var student = new Student("11t0033","米長慎介",24);
// ===============================================================
/**** コンストラクタ関数を使った派生版 ****/
function People(name, age){
var self = this; // 仮想プライベートメソッドで使うthis
this.name = name;
this.age = age;
this.hello = function(){
return "hello, I am"+this.name;
};
// 仮想的なプライベートメソッド
var fuck = function(){
return "fuck you!!!";
};
}
/** コンストラクタは持てないけどリテラルオブジェクトを使った方法 **/
var People = {
name: "よね",
age:10,
hello: function(){
return "hello, I am"+this.name;
}
};
/** ========== for文 ========== **/
/** for文 **/
for(var i=0;i<10;i++){ // for(var i=0,j=0;i<10;i++,j--)みたいなことも可能
// 処理 break, continue
}
/** valueを走査 **/
for each(var value in obj){
// 処理 break, continue
}
/** keyを走査 **/
for(var key in obj){
// 処理 break, continue
}
/** ========== while文 ========== **/
while("条件"){ // 一行なら中括弧省略可
// 処理 break,continue
}
do{
// 処理 break, continue
}while ("条件式");
label: while(true){ // for文も同じ
// 処理
break label;
}
/** ========== if文 ========== **/
if("条件"){
// 処理
}else if("条件"){
// 処理
}else{
// 処理
}
/** ========== 真偽表 ========== **/
true_false = {
false: [0, "", null, undefined, NaN],
true : ["0以外の数値", "''以外の文字", "null以外のオブジェクト"]
//ちなみにnullはオブジェクトでundefinedはundefinedらしい
}
/** ========== switch文 ========== **/
switch("式"){
case "値1":
case "値2":
// 値1と2に対する処理
case "値3":
// 値1,2,3に対する処理
break;
case "値4":
// 値4に対する処理
break;
default:
// その他の処理
}
/** ========== 配列 ========== **/
// まぁ普通
ary = [1,2,3];
// 多次元配列
ary = [[1,2,3],
[4,5,6],
[7,8,9]
];
ary.length(); // 長さ
ary.toString(); // 文字列化
ary.join(":"); // 指定された文字列で連結した文字列
ary.sort(function(var1,var2){}); // 引数なしもOK
ary.slice(1,2); // スライサー(引数一つなら末尾まで)
/** ========== オブジェクト ========== **/
obj = {
hello: "こんにちは",
fuck: "ファック",
hoge:function(){
// 処理
}
};
obj.hello; // こう使えばオブジェクトだし
obj["hello"]; // こう使えばハッシュ
delete obj.hello; // これで要素削除
/** ========== グローバル関数 ========== **/
parseInt("111"); // intに変換.第二引数は基数
parseFloat("12.0"); // floatに変換
isNaN(10/0); // 値がNaNかチェック
isFinite(Infinity); // 有限値ならtrue. -Infinityってのもある
Date(); // 現在の日付の文字列
/** ========== Date ========== **/
new Date(); // 現在の日付と時刻
new Date(ms); // 引数一つならmsで判断
new Date(str); // 文字列一つならアナライズ
new Date(year, month[, day, hour, min, sec, ms]); // 2つ以上ならそれぞれ指定
// yearはそのまま、月は0~11, 日は1~31, 時は0~23, 分秒は0~59, ミリ秒は0~999
date.toString(); // すべて文字列化
date.toDateString(); // 日付のみ文字列化
date.toTimeString(); // 時刻のみ文字列化
// toLocaleString / toLocaleDateString / toLocaleTimeStringはローカライズされた文字列
date.toUTCString(); // その時刻でのUTC時間を返す
date.valueOf(); // ミリ秒に変換
Date.parse("2009/08/11 08:14:45"); // 文字列からDateオブジェクト生成
// 各時間を取るのはこうするらしい(setterも同じようにあるよ)
// getFullYear / getMonth / getDate / getDay
// getHours / getMinutes / getSeconds / getMilliseconds
/** ========== Math ========== **/
Math.abs(val); // 絶対値
Math.round(val); // 四捨五入
Math.ceil(val); // 切り上げ
Math.floor(val); // 切り捨て
Math.max(val1, val2); // 最大値を返す.可変長引数.minもあり
Math.random(); // ランダムな値を返す
Math.sin(rad); // sin,cos,tan,asin,acos,atan(ラジアン)
Math.sqrt(val); // 平方根
Math.pow(x, n); // xのn乗
Math.log(val); // log e valを返す
Math.exp(val); // eのval乗
/** ========== String ========== **/
s.length(); // 文字列長(全角半角関係なし)
s.concat(val1, val2); // 可変長引数。つなげた文字列を返す
s.slice(0, 1); // スライサー(substring, substrも一緒?)
s.charAt(0); // 指定された番号の文字
s.charCodeAt(0); // 指定された番号の文字コードを返す
String.fromCharCode(12497, 12477); // 可変長引数。文字コードから文字列生成
s.toLowerCase(); // すべて小文字(toUpperCaseもあるよ)
s.indexOf("文字列",n); // n番目以降で指定された文字列が存在する番号を返す.lastindexもあるよ
@shinsuke79
Copy link
Author

クラス変数を使わないなら直感的にかけるけど、それより先はコンストラクタ関数を使った書き方になっちゃう

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment