問題タブ [ecmascript-5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
361 参照

javascript - SafariでDOMハンドラを列挙可能にする方法は?

以前に変更した DOM 要素のすべてのプロパティを列挙する必要があります。Firefox、Chrome、Opera ではできましたが、Safari ではできませんでした (現時点では IE は気にしません)。

*: プロパティは Opera では列挙できませんが、とにかく列挙されます!!!

プロパティを割り当てる前に削除することで、Chrome で3 番目のalert出力を作成できます。trueonclick

しかし、プロパティはまだ Safari で列挙されていません。

私は EcmaScript 5 Object メソッドdefinePropertyで試してみました:

しかし、それはエラーを返します:

TypeError: defineProperty は DOM オブジェクトではサポートされていません

助言がありますか?

PS Safari と Chrome はどちらも Webkit に基づいているのに、なぜ動作が異なるのですか?

0 投票する
2 に答える
2557 参照

javascript - JavaScript:封印されたオブジェクトにプロパティを追加すると、typeerror例外がスローされますか?

JavaScriptで次のようなものがあるとします。

それで、正しい振る舞いは何ですか?strictモードではないので、obj.address行は単に無視されると思いました。ただし、Chromeをスローするため、そうではありません。私はV8のテストを見ていますが、厳密モードでのみスローする必要があるようです。

object.sealテストコード: http ://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/object-seal.js?spec = svn7379&r = 7379

そのファイルのコードは次のとおりです。

ところで、厳密モードからのテストがあり、私の例では明らかにスローされます:http ://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/strict-mode.js?spec = svn7250&r = 7250

何か案は?

0 投票する
1 に答える
1826 参照

javascript - ECMAScript 5 サポートのテスト スイート

ECMAScript 5 のサポートをテストするテスト スイート (たとえば、QUnit で記述) が存在するかどうかを知っている人はいますか?

0 投票する
1 に答える
1072 参照

javascript - ES5 には __lookupGetter__ に対応するものがありますか?

Object.definePropertyは非常に楽しく、非標準 API の優れた代替手段であることは__defineGetter__知っ__defineSetter__ていますが、同様の対応するものはあります__lookupGetter__か? または、同様のことを達成する方法はありますか?

0 投票する
3 に答える
89 参照

javascript - ブラウザが **{get X() {}}** をサポートできるようにする方法

私は使用を拒否し__defineProperty__、代わりに代替構文{get X() {}}を好みます

ただし、これは IE では機能しません。

ブラウザの検出は別として、ブラウザが新しい構文をサポートしていることを検出できる最良の方法は何ですか?

編集:実際には特にIEを検出しようとはしていませんが、「 get X(){}構文をサポートしていないブラウザー」をnotsupported.htmlにリダイレクトします。私はそれを行う方法がいくつかあると信じており、それに取り組んでいますが、誰かが以前にこの問題を抱えていて解決策を持っている場合に備えて..

編集 2: ところで、誰も (私以外の) get X(){}構文を使用していないという意味ではありません。

0 投票する
1 に答える
739 参照

actionscript-3 - AS3 コードから Tamarin ESC コンパイラを呼び出すにはどうすればよいですか?

AS3 コードから Tamarin の ESC コンパイラを呼び出そうとしています。ESC コンパイラーのバイトコードを Flash Player にロードしましたが、それを呼び出すと、どんなソースコードをフィードしても、ESC コンパイラーは常に同じ何もしないバイトコードを返します。人間が読める ESC コードは次のようになります。

次の AS3 コードを使用して呼び出しています。

しかし、どのソース コードをフィードしても、常に 2 つの関数のバイト コードが返されます。一方が他方を呼び出し、どちらの関数も何も実行しません。

これは、返されるバイト コードです (メタデータは取り除かれ、人間が読める形式に変換されます)。

前もって感謝します!これが筋金入りの質問であることは承知していますが、筋金入りのコーダーがそれに光を当ててくれることを願っています!

0 投票する
2 に答える
1948 参照

javascript - Object.constructor===Object.constructor.constructor // なぜ?

ここで述べたhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function関数オブジェクトのインスタンスのコンストラクタ プロパティは、「オブジェクトのプロトタイプを作成する関数を指定します」。これは紛らわしいので、Object.constructorは「オブジェクトのプロトタイプを作成する関数」ですか? 「オブジェクト」とは正確にはどのオブジェクトですか?

Object.constructor のコンストラクター プロパティ自体がなぜなのかを理解しようとしています。

Object.constructor===Object.constructor.constructor // なぜ?

編集:TJ Crowderの答えは良いと思いますが、彼の言葉の言い回しはかなりあいまいです(少なくとも私にとっては、最初に読んだときに理解するのが難しくなっています). これが言い換えられた答えです:

1)オブジェクト関数のインスタンスです

2)オブジェクトにはコンストラクターというプロパティがないため、 Object.constructorを呼び出すと、実際にはObject.[[prototype]].constructor (別名Object.__ proto __.constructor ) が返されます。

3) Object.constructor (別名Object.__ proto __.constructor ) はFunctionのインスタンスです。

4) ObjectObject.constructor (別名Object.__ proto __.constructor ) の両方がFunctionのインスタンスであるため、両方とも同じオブジェクトを参照する__ proto __プロパティを持っています。つまり、Object.__ proto __ === Object.constructor.__ proto __ (別名Object.__ proto __.constructor._ proto _ )

5) Object.constructor===Object.constructor.constructorの行は、実際にはObject.__ proto __.constructor===Object.constructor.__ proto __.constructorの行と同じです。

6) 手順 4 と 5 を組み合わせると、Object.constructor===Object.constructor.constructorが得られます。

7) 手順 4) に進む

0 投票する
4 に答える
584 参照

javascript - なぜ **(Object.__proto__ instanceof Function)** === false?

Object._ proto _ instanceof Functionで false が返されるのはなぜですか?

0 投票する
3 に答える
5050 参照

javascript - なぜ isPrototypeOf が必要なのですか?

このページには次のように記載されています。

注: isPrototypeOf は instanceof 演算子とは異なります。AFunction の式オブジェクト インスタンスでは、オブジェクト プロトタイプ チェーンは、AFunction 自体ではなく、AFunction.prototype に対してチェックされます。

わかりました、彼らが私たちに伝えようとしていることはよくわかりません。object instanceof AFunctionAFunction.prototype.isPrototypeOf(object) とまったく同じではありませんか? または私は間違っていますか?

なぜ必要なのisPrototypeOfですか?

私がする必要があるp.isPrototypeOf(o)なら、私はただすることができませんでしたo instanceof p.constructorか?

さらに、機能的には?p.isPrototypeOf(o)と同等です。p===Object.getPrototypeOf(o)

0 投票する
1 に答える
177 参照

javascript - javascript: コンストラクタに関する質問 **new** キーワード

ページhttps://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Details_of_the_Object_Modelから:

JavaScript が new 演算子を認識すると、新しい汎用オブジェクトを作成し、この新しいオブジェクトを this キーワードの値として WorkerBee コンストラクター関数に渡します。コンストラクター関数は、projects プロパティの値を明示的に設定し、内部 protoプロパティの値を WorkerBee.prototype の値に暗黙的に設定します。(そのプロパティ名には、先頭に 2 つのアンダースコア文字があり、末尾に 2 つのアンダースコア文字があります。) protoプロパティは、プロパティ値を返すために使用されるプロトタイプ チェーンを決定します。これらのプロパティが設定されると、JavaScript は新しいオブジェクトを返し、割り当てステートメントは変数マークをそのオブジェクトに設定します。

したがって、基本的にこの関数がある場合:

var bee1 = new Bee("qwe", "asd");のようなことをすることの違いは何ですか?対: