1

私はPrototypeJSコードを見ていて、このチェックを見つけました -

var div = document.createElement('div'),
      form = document.createElement('form'),
      isSupported = false;    
if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {
    isSupported = true;
}

この条件が false を返すケースを知りたい -

div['__proto__'] !== form['__proto__']

注: 関数のコメントには、「ブラウザーが html 要素プロトタイプの拡張をサポートしているかどうかを検出するために内部的に使用されます」と記載されています。このチェックがどのように役立つかわかりません。

4

1 に答える 1

0

このテストにより、PrototypeJS は、特定のメソッドを特定のタイプの要素プロトタイプに追加できるかどうかを判断できます。

たとえば、要素で使用されている場合にのみ意味があるため、要素でメソッドgetInputs()(フォームのすべての要素の配列を返す) を使用する必要はありません。<div><form>

HTML

<div id='mydiv'></div>
<form id='myform'></form>

JS

$('mydiv').addClassName('newclass');  //does not error
$('myform').addClassName('newclass'); //does not error

$('myform').getInputs();              //does not error
$('mydiv').getInputs();               //throws error 'has no method getInputs()'

JSFiddle の例http://jsfiddle.net/C39gu/

于 2013-08-30T14:27:04.500 に答える