2

したがって、これが可能かどうかは完全にはわかりませんが、「未定義」オブジェクトの定義をハッキングできるかどうかは興味があります。主に、これの目的は、未定義のオブジェクトで.replaceを実行するときにエラーが発生するのを防ぐことです。「バックエンド」に入り(そのようなものもありますか??)、未定義のオブジェクトにメソッドを追加することは可能ですか(それが最初に定義されている場合でも??)。本質的にのようなものに沿った何か

undefined.prototype.replace = function(v,r){ return false };

明らかに、これは文字列またはオブジェクトで機能しますが、未定義は、本質的に定義がないようです。しかし、javascriptには利用可能な最終結果として含まれているため、それでも混乱する可能性があるように感じます。

御時間ありがとうございます!ここに何が表示されるのか本当に気になります!

編集:主な問題は、バージョン管理を行っている他の8人の開発者と共同開発していることです。また、入ってきた新しい人の中には、JavaScript(またはその点での適切なエラー処理)に慣れていない人もいるので、必要に応じてデフォルトのリターンを受け取ることができる微小エラーのグローバルハンドラー。このアイデアがうまくいくようには見えません。たぶん、グローバルなトライアンドキャッチシナリオ?

4

3 に答える 3

1

4.3.2 プリミティブ値

条項 8 で定義されている Undefined、Null、Boolean、Number、または String 型のいずれかのメンバー。

注 プリミティブ値は、言語実装の最下位レベルで直接表現されるデータです。

4.3.10 未定義型

唯一の値が未定義の値である型。

ご覧のとおりundefined、 はプリミティブ値であるため、それにプロパティを定義することはできません。それはオブジェクトではないからです。のように考えるのが最善の方法nullです。唯一の違いは、 がnull意図的な空であることを意味するのに対し、undefinedはまだ定義されていない変数のデフォルト値と型であることです。

于 2010-10-07T18:10:38.437 に答える
0

これは現在、一部のブラウザーで機能する可能性がありますが、私はそうしません。以前の ECMAScript 仕様は、 の正確な性質について少しあいまいでしたundefinedが、ECMAScript 5 では明示的undefinedに読み取り専用と記述されています。より良いアプローチは、値が未定義かどうかをテストすることです。

if (x !== undefined) {
    // OK
} else {
    // do nothing/set default value/skip
}
// alternate approach:
if (typeof x != "undefined") {
    // OK
} else {
    // do nothing/set default value/skip
}

!==最初のケースではor===を使用する必要があることに注意してくださいundefined == null

于 2010-10-07T18:09:37.067 に答える
0

undefined は null に似ています。プロトタイプが上書きされるオブジェクトではありません。js コードでこれを行うことはできないと思います。特定の js インタープリターが undefined を処理する方法を変更する必要があります。そして、それを行うことは基本的にjavascriptを変更することです。

undefined でメソッドを呼び出すときにエラーが発生しないという具体的な例については、; なぜそれをしたいのですか?可能であったとしても、コード内のエラーをマスクしているだけで、後でさらに悪いことが起こる可能性があります。

あなたはいつでもできる

var obj = getObj()

if (obj && obj.replace) obj.replace()...

未定義のエラーを防ぐために...

エラーなしで未定義の値に対してメソッドを呼び出すことができる言語はありますか?

于 2010-10-07T18:03:22.853 に答える