1

我正在查看 PrototypeJS 代码并发现了这个检查 -

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

我想知道这种情况返回假的情况是什么 -

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 回答