環境:
プロトタイプ バージョン: '1.6.1_rc3'
Aptana Studio、ビルド: 1.2.5.023247
IE7
FF2.0.0.4
Opera 10 ベータ版
var Prototype = {
バージョン: '1.6.1_rc3',
// ブラウザ オブジェクトを定義します
Browser: (function(){
var ua = navigator.userAgent;
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera ]' ;
return {
IE: !!window.attachEvent && !isOpera,
Opera: isOpera,
WebKit: ua.indexOf('AppleWebKit/') > >Gecko : ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,
MobileSafari: /Apple.*Mobile.*Safari/.test(ua)
}
})(),
//ブラウザー機能オブジェクトを定義します。
Browser features: {
XPath: !!document.evaluate,
SelectorsAPI: !!document.querySelector,
ElementExtensions: (function() {
varconstructor = window.Element || window.HTMLElement;
return !!(constructor && constructionor.prototype);
})(),
SpecificElementExtensions : ( function() {
if (typeof window.HTMLDivElement !== '未定義')
return true;
var div = document.createElement('div');
var form = document .createElement ('form');
var isSupported = false;
if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {
isSupported = true;
}
div = form = null;
})()
},
ScriptFragment: '',
JSONFilter: /^/*-secure-([sS]*)*/s*$/,
emptyFunction: 関数() { },
K: function(x) { return x }
};
if (Prototype.Browser.MobileSafari)
Prototype.Browser features.SpecificElementExtensions = false;
ブラウザ オブジェクトは、匿名関数を呼び出してすぐに実行することによって返されます。 匿名関数を実行するには、次の 3 つの方法があります。
1. (function(){return 1})() //()強制評価、関数オブジェクトを返し、関数を実行します
2. (function(){return 1}()) //関数の実行結果を返します
3. void function(){alert(1) }() //void も利用可能 強制操作の使い方
このうち、Opera が isOpera であると判断する方法は、Opera ブラウザではオブジェクトを返す window.opera を使用し、それ以外のブラウザでは未定義を返します
BrowserFeature オブジェクトは主にブラウザの一部の機能を決定します。FF は、IE ではサポートされていない機能を多数サポートします。たとえば、document.evalute メソッドは XPATH を介して HTML ドキュメントを操作できますが、IE はそれをサポートしません。
この関数の詳細な使用法は次のとおりです:
var xpathResult = document.evaluate(xpathExpression, contextNode, namespaceResolver, resultType, result);
evaluate 関数は、合計 5 つの引数を受け取ります。
xpathExpression: を含む文字列評価される xpath 式
contextNode: Xpath 式が評価されるドキュメント内のノード
namespaceResolver: xpathExpression から名前空間プレフィックスを含む文字列を取得し、その URI を含む文字列を返す関数これにより、XPath 式で使用されるプレフィックスと、ドキュメントで使用される (おそらく異なる) プレフィックス間の変換が可能になります。
resultType: 返される結果のタイプを示す数値定数。これらの定数はグローバルで使用できます。 XPathResult オブジェクトは、XPath 仕様の関連セクションで定義されています。ほとんどの目的では、XPathResult.ANY_TYPE を渡すことで問題ありません。これにより、Xpath 式の結果が最も自然な型
result:An既存の XPathResult として返されます。 null を渡すと新しい XPathResult が作成されます。
このうち、__proto__ は FF 配下のオブジェクトのプロトタイプ、つまりオブジェクトのプロトタイプを取得できます。これは、C、JAVA、および C# 言語の通常のクラスベースの継承とは異なり、JavaScript の継承メカニズムであるプロトタイプベースの継承の基礎でもあります。 RubyやPythonでよく使われるメタクラスの継承方法もあります。
ScriptFragment は、Web ページ内のスクリプトを参照する正規表現を定義します
JSONFilter: 使用法を明確にするために、プロトタイプの元の説明を引用することをお勧めします -
コードをコピー コードは次のとおりです:
/*String#evalJSON internally calls String#unfilterJSON and automatically removes optional security comment delimiters (defined in Prototype.JSONFilter).*/
person = '/*-secure-n{" name": "Violet", "occupation": "character"}n*/'.evalJSON() person.name; //-> "Violet"
/*You should always set security comment delimiters (/*-secure-n...*/) around sensitive JSON or JavaScript data to prevent Hijacking. (See this PDF document for more details.)*/
Prototype.K is to return the first One-parameter method:
Prototype.K('hello world!'); // -> 'hello world!'
Prototype.K(1.5); // -> 1.5
Prototype.K(Prototype.K); // -> Prototype. K
Explain the static methods and instance methods in JavaScript
The static method should be extended like this:
Date.toArray=function(){}
Then the toArray method is Date Static methods cannot be called like this (new Date()).toArray(); otherwise an exception will be thrown.
To be used like this: Date.toArray()
The instance method should be extended like this:
Date.prototype. toArray2=function(){}
Then the toArray2 method is the instance method of Date. Date.toArray2() cannot be called like this;
It should be used like this: (new Date()).toArray2()