javascript_javascript スキルにおける最も悪質な関数の例の分析

WBOY
リリース: 2016-05-16 18:06:16
オリジナル
1031 人が閲覧しました

これは、混乱を招く JavaScript の最もユニークな関数です
一般的な操作を見てみましょう

コードをコピー コードとして

function doit(){
.....
}
doit();

JavaScript で関数を使用できますメソッドとして使用します
コードをコピーします コードは次のとおりです:

var obj=new Object( ; つまり、Function 型のインスタンス)




コードをコピー


コードは次のとおりです:
function result(num1, num2 ) { return num1 num2; var result = new Function("num1", "num2", "return num1 num2" );
上記の実行結果は同じですが、関数の結果は次のように書くこともできます (つまり、関数式)




コードをコピー


コードは次のとおりです:
var result=function(num1,num2){ return num1 num2; の唯一の違いはこれら 2 つの記述方法は、関数が最初に実行されるのに対し、関数式はコードが実行されるまで実行されないことです。また、各関数には、関数実行の動的パラメーター内に配列のような引数オブジェクト があります。 ,



コードをコピー

コードは次のとおりです:

function result(){ return argument[0] argument[1]; } result(1,2); 引数は動的にパラメータを渡すときによく使用されます
関数はオブジェクトなので、特定の属性も必要です




コードをコピー

コードは次のとおりです。

function person( ){ .... } person.name="xxxx"; person.say=function(){ alert(this.name); 🎜>person.say(); //alert("xxxx")

これもクラスとして考えることができ、関数本体はコンストラクター



コードをコピー


コードは次のとおりです:

function Person(nm){
this.name=nm ;
this.say=function(){ alert(nm); } } var p1=new person("ygm1") ); p1.say(); // 警告 ygm1 ygm1 var p2=new person("ygm2"); // 警告 ygm2 ygm2
ここで this.name が使用されていることに注意してください。これは、alert(name) が wi​​ndow オブジェクトのプロパティを直接検索する場合、パラメーター nm を同時に渡すことができます。実際、これにはスコープ チェーンが含まれており、子ドメインは親ドメインの属性にアクセスできますが、その逆はできません (実際には、取得することもできます)。
他の OO 言語と比較すると、各クラスはいくつかの静的プロパティまたはメソッドを持つことができ、JavaScript はプロトタイプを通じてシミュレートされ、各オブジェクトのプロパティの共有を実現します。




コードをコピーします


コードは次のとおりです:


function Person(num) {
。 ..
}
person.prototype.name = "ygm";
alert(new Person().name);
ただし、OO 言語の静的メソッドこれはクラスによって呼び出され、それ自体をインスタンス化することはできません。JavaScript では、その特殊性によりまったく逆になります。 ここで、alertperson の name 属性に注意してください。名前が関数本体に見つからない場合は、インスタンス化されます。プロトタイプ内で見つかった場合は、プロトタイプ内の名前をマスクして、その値を直接返します 実際には、関数が作成されるたびに、プロトタイプ オブジェクトも作成され、プロトタイプ オブジェクトが参照されます。 プロトタイプ オブジェクトをオーバーライドできます。 person.prototype=new Parentperson(); person のプロトタイプ オブジェクトは Parentperson オブジェクトを指し、Parentperson オブジェクトはそのオブジェクトを指します。独自のプロトタイプ オブジェクトに...これにより、プロトタイプ チェーンが形成されます...
わかりました今日はここまでです...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート