HOKYPOKY.BLOG

memo

JavaScriptのprototypeベースでクラスのようなものを作る方法。

function object(o) {
  var F = function () {};
  F.prototype = o.prototype;
  return new F();
}
function SomeClass () {
  // class constructor;
  console.log("SomeClass");
}
SomeClass.prototype = {
  prop1: "value1",
  prop2: "value2",
  method1: function () {
    console.log(this.prop1 +"/"+ this.prop2);
  }
}
var myCar = object(Car); //"SomeClass"
myCar.prototype = {
  prop1: "changed value1"
}
myCar.method1(); //"changed value1/value2"

JavaScriptの関数型言語っぽいアプローチ

var sum = (function (x,y,z) {
  return (x+y+z);
})(1,2,3)
console.log(sum); //6

それの応用。
jQuery.noConflict()をしつつ$を使う方法。

//既存の$を上書きしない(prototype.jsとの共存)
jQuery.noConflict();
//関数型のアプローチでjQueryを範囲限定で$と呼ぶ
(function($){
  /**
   * @function lorem
   * jQuery plugin
   */
  $.fn.lorem = function () {
    this.html("Lorem Ipusum");
    return this;
  }
  //ready
  $(function () {
    //つくったプラグインloremを使ってみる
    $("p")
      .lorem()
      .css("color","#ff0000")
    .end();
  })
})(jQuery);