__proto__プロパティにnullを代入すると、Object.prototypeのメソッドを継承しないクリーンなオブジェクトを手に入れることができる。 var o = {__proto__: null}; console.log(typeof o.toString); // undefined console.log('__proto__' in o); // false console.log(typeof o.__proto__); // undefined console.log(Object.getPrototypeOf(o)); // null console.log(o instanceof Object); // false '' + o; // TypeError: can't convert o to primitive type 何故か__proto__に代入すると
いちいちhasOwnPropertyを使わなくてよくする(ジェネレータの使いかた) - 素人がプログラミングを勉強していたブログについて。 2回ループするid:javascripter にジェネレータ使ってるから「2回」ってことはないとツッコマレタ。その通りですね。のは気になるのと、クロスブラウザにしつつ、微妙な高速化*1。 元ネタは指定したエレメントを非表示にするuser js書いた - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥で使われていた関数から。 //適当にArrayを拡張 Array.prototype.del = function(index){ return this.slice(0,index).concat(this.slice(index+1)) }; var a = [1,2,3]; var __A = []; // 空の配列 f
自分用に図を描いてみた。JavaScript のプロトタイプチェーン。たぶんきっとこんな感じかなと。 [追記 at 2008/04/30] constructor プロパティも書き加えた、より汎用的な図はこちらで。 [/追記] で、これは以下のコードを基に図に起こしたもの。いろんなサイトを巡って勉強するのももちろんだけど、やっぱり自分でコード書かないと身に付かないなぁとしみじみ思ったり。 ちなみに、__proto__ プロパティは基本的には内部プロパティであり、一部のホスト環境でしかアクセスできないのでご注意を。Firefox では動きます。 //画面表示関数 function debugPrint() { var separator = " "; alert(Array.prototype.join.apply(arguments, [separator])); }; /**
あなたの疑問答えます!のコーナーの時間です。 via - メソッドがなければprototypeをさかのぼる - lesamoureusesの日記 その2で書いたコードについて、 var Echo = { hello: function (){ return 'hello'; } }; var Hoge = function (){}; Hoge.prototype = Echo; var hoge = new Hoge; alert(hoge.hello()); // hello Echo.world = function (){ return 'world'; }; alert(hoge.world()); // world これはEchoがオブジェクトで(newしていなくて)、hogeがメソッド「world」を探そうとした時に 自分にないからHogeにさかのぼり、さらにHogeにな
String.prototype.format = (function(regx, zero){ return function(){ var args = arguments, x = 0; return this.replace(regx, function(_, pos_s, flag, width, pos_w, prec, pos_p, type){ if(type == '%') return '%'; if(~width.indexOf('*')) width = pos_w > 0 ? args[pos_w - 1] : args[x++]; prec = prec === undefined ? -1 : ~prec.indexOf('*') ? (pos_p > 0 ? args[pos_p - 1] : args[x++]) : +prec; var r = '',
前回のエントリが700users突入しました。ありがとうございます。参考になれば幸いです。 ということで、その2になります。 前回書いた通り、C/Javaについてはある程度の知識がある人なので、クラスなどのオブジェクト指向はちゃんと理解されているようですが、プロトタイプ指向は初めて学ぶようです。 javascript(ECMAScript)のプロトタイプは他のプロトタイプ指向言語とはひと味違う動作をするので、その点も含めておさらい プロトタイプとはなんですか?プロトタイプとは継承パターンの一つでしかないです プロトタイプは単なる継承パターンであり、単一の方向への継承しか行わない点についてはクラスベースと同じです。 var Hoge = function (){}; Hoge.prototype.methodA = function (){ return "this is methodA
Javascriptでオブジェクト指向なコードを書くには、prototypeベースな言語ゆえ、他のOO言語と異なり多少の小細工が必要になります。やり方は幾つもあるようですが、自分であれこれ試してみたうえでのまとめをここで共有してみます。 OOPと言っても、あくまで個人的に最低限必要だと思うこれら機能の実現を目的にしています: 子クラスのコンストラクタにて、親のコンストラクタを実行 他のOO言語では空気を吸うがごとく実装されている機能 メソッドの継承 Child.prototype = new Parent() なんて親インスタンスを作る事無くなんとかする これらをいかに少ない手間で実現できるか。hacker諸氏ならばちょろっと頭使えばできるのでしょうが、自分はウダウダ時間かけて悩んでしまいました orz。以下3通りの解決策です。 目次 専用のextend関数を使う 使い方 サンプルおよびテ
At the heart of binding, it’s merely a means to control execution scope—Function x executions in the scope of object y. It can be tough to grasp at first, but with the right amount of ninja references, anything can be explained so someone can understand it. What’s my name fool To get a basic understanding of binding, check out this example. var Car = function() { this.name = 'car'; } var Truck = f
HTMLElement Prototypingとは? divやspanなどのHTML要素に独自メソッドを追加する為のprototype拡張の手法です。これを応用するとIEやOperaで採用されているinsertAdjacentHTMLをfxで利用できるようにしたりSafariで利用できるようになります。 各ブラウザ毎に実装が異なる場合があるのでクロスブラウザ用としてまとめエントリしておきます。 // prototype拡張前は当然以下はエラー document.getElementById('foo').foo(); // prototype拡張後は実行される。 HTMLElement.prototype.foo = function(){ alert('foo'); }; document.getElementById('foo').foo(); // alert('foo'); HTM
javascriptのprototypeはなかなか理解してもらえないですねぇ。 ここ1年間でマジマジと実感しました。 特に、大規模開発をしているとこだと、いろんな知識が入り乱れていて(ホームページ時代からAjax本を読んだ人とか)が、javascriptが単なる関数型列挙な言語(語弊があるけど)という見方が大多数を占めているように見えます。 そんな中で "String.prototype.trim" みたいなコードを見せても、説明下手なのか中々上手く伝わらないですねぇ。 ということで(?)、僕がjavascriptのprototypeを身に着けるまでやったこと、とか。これも備忘 prototype.jsのソースコードを眺める Array.mapとかEnumerable, Hashは勉強になりますねー。 ただ、prototype継承されすぎて、ちょっと多すぎなこともあります。 var
このエントリーは以下のエントリーへの解答です 404 Blog Not Found:javascript - 勝手に添削 - JavaScript入門 はじめに 僕はあまりブログを一生懸命書くのは嫌いです。で、いつも適当に言葉は少なめにソースだけで解説しているが。今回は、それだけでは伝わらないところまで突っ込まれてしまったので、僕が伝えたかった意図をこと細かく説明していこうと思います。 文章が苦手なので、変な言い回しで読み辛かったりすると思いますがよろしくお願いします。 一応、弾さんには断っておきますが、別に弾さんに噛みついている訳ではないです。ただ、弾さんのような有名人に突っ込まれたら、僕の講義を聞いてくれたエンジニアが嘘を教えられたと不安になってしまうのではないかと思ったのです。僕の講義を聞きにくれた人には、虚像でもいいから 100 % の自信と勇気を付けて欲しい(プログラムを書く上で
2007年04月12日23:30 カテゴリLightweight Languages javascript - 勝手に添削 - JavaScript入門 釈迦に説法を承知で。 IT戦記 - 社内勉強会資料 amachang - JavaScript 入門Object.prototype = { /* ... */ }は避けるべし みにくいのでオブジェクトを入れ替える方式に Box.prototype = { speed: 4, move: function() { this.left += this.speed; this.element.style.left = this.left + 'px'; if (this.left > 400) clearInterval(this.id); }, start: function() { var self = this; this.id = s
ExternalInterface.addCallback で定義された関数は apply できない http://d.hatena.ne.jp/nitoyon/20070214/p1 っていう記事に書いてあるコードを手直し。Flashをいじってないんで、上手く動くかどうかよくわかんないですが、こんな感じでいけると思います。 function applySwf(swf, method, args){ if(swf && typeof swf[method] == "function"){ var params = []; for(var i=0;i<args.length;i++) params[i] = "_"+i; Function( params.join(','), "this("+params.join(',')+")" ).apply(swf[method], args); }
Browser history support and sharable URLs have been deployed. Read more
javascriptはFunction.prototypeに追加したメソッドで元の関数の挙動を変更することができる。 later 最速インターフェース研究会 :: Function.prototypeを拡張して遅延実行を実現する 関数の実行を指定時間後に行なう。 var func = function(v){alert(v)}; func.later(1000)("1秒後に警告"); func.later(2000)("2秒後に警告"); func.later(1000).later(2000)("3秒後に警告"); (function(v){alert(v);arguments.callee.later(1000)(v)}).later(1000)("1秒ごとに実行") callTimeout, callInterval Kazuho@Cybozu Labs: setTimeout をオ
Looking for information about Informa TechTarget products and services? The commercial homepage has moved. Visit Informa TechTarget News 31 Jul 2025 / Policy & regulation CMS releases FY 2026 IPPS final rule, bumping rates 2.6% The FY 2026 Hospital IPPS and LTCH PPS final rule will increase the IPPS operating rates by 2.6%, contributing to an overall $5 billion in hospital payments next year. 31 J
この前の続き。 Function.prototype.cached = function() { var f = this; var args = arguments; f._cache = new Cache(function_name(f) || "", args[0] || 10, args[1] || function(){return 1}, args[2] || function(){return 1}); return function() { var cache = f._cache.get(arguments); if (cache) { return cache; } else { cache = f.apply(f, arguments); f._cache.set(arguments, cache); return cache; } }; }; // via htt
このエントリの続きです。 d:id:amachang:20061220:1166630932 ActionScript では Object.prototype を書き換えていいので・・・、 実際に便利な関数を作ってみた _def 関数 この関数は、 DontEnum な(for in で繰り返されない)プロバティを作る Object.prototype._def = function(p, o) { this[p] = o; this.setPropertyIsEnumerable(p, false); }; Object.prototype.setPropertyIsEnumerable('_def', false); _merge 関数 この関数は、this に別のオブジェクトをマージする。上の _def 関数を使って作っています。 Object.prototype._def('_me
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く