ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptの基本概念の基礎解説フォーラム投稿の学習記録_基礎知識

JavaScriptの基本概念の基礎解説フォーラム投稿の学習記録_基礎知識

WBOY
WBOYオリジナル
2016-05-16 18:55:49793ブラウズ

1. このオブジェクトについて

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

view plaincopy to Clipboardprint ?
var obj1=new Object();

//両方のオブジェクトに属性 p を追加し、それぞれ 1 と 2 にします
obj1 .p=1;
obj2.p=2;

// p の値を表示するメソッドを obj1 に追加します
obj1.getP=function(){
alert( this .p); //表面上、このポインタは obj1 を指します
}

//obj1 の getP メソッドを呼び出すと、結果は 1
obj1.getP()
//obj2 の getP メソッドを obj1 の getP メソッドと同じにします
obj2.getP=obj1.getP;

//obj2 の getP メソッドを呼び出し、結果は 2
obj2 と表示されます.getP() ;
var obj1=new Object();
var obj2=new Object(); // 属性 p を両方のオブジェクトに追加し、それぞれ 1 と 2 に等しい
obj1 .p=1;
obj2.p=2;

// p の値を表示するメソッドを obj1 に追加します
obj1.getP=function(){
alert(this .p); //表面上、このポインタは obj1 を指します
}

//obj1 の getP メソッドを呼び出すと、結果は 1
obj1.getP() として表示されます。 ;

//obj2 の getP メソッドを obj1 の getP メソッドと同じにする
obj2.getP=obj1.getP;

//obj2 の getP メソッドを呼び出すと、結果は 2 obj2.getP() ;









コードをコピー
コードは次のとおりです: //関数オブジェクトのメソッドを追加します。method1 Function.prototype.method1=function(){ alert("function1");
}
function func1(a,b,c){
return a b c;
func1.method1(); >func1.method1.method1(); //ヒント: function1



//通常のオブジェクトと関数オブジェクトの両方を含むオブジェクト メソッド getType を追加します
Object.prototype.getType=function (){
return typeof (this);
var array1=new Array();
function func1(a,b){
return a b; >alert(array1.getType() ); //プロンプト: オブジェクト
alert(func1.getType()); // プロンプト: 関数



//func2 が渡されますfunc1 の仮パラメータ theFunc へのオブジェクトを追加し、 func1 内から theFunc を呼び出します。
function func1(theFunc){
theFunc();
}
function func2(){
alert ("ok");
}
func1(func2); // ヒント: ok



// 関数呼び出しを行うときは、指定されたパラメーターに加えて、暗黙的なオブジェクト引数も作成されます。
function func(a,b){
alert(a);
for(var i=0;ialert(arguments [i]);
}
}
func(1,2,3); //ヒント: 1,2,3



/*
引数オブジェクトのもう 1 つの属性は callee です。
これは関数オブジェクト自体への参照を表します。
これは、名前のない関数の再帰を実装したり、関数のカプセル化を保証したりするのに役立ちます。 .
*/
var sum =function(n){
if(1==n)
return 1;
else
return n argument.callee(n-1) ;
}
alert(sum (100)); //プロンプト: 5050



/*
JavaScript では、apply と call という 2 つのメソッドが定義されています。
それらの関数は、実行する別のオブジェクトにバインドされます。この 2 つの唯一の違いは、パラメーターの定義方法です。
以下は参照フラグメントです。
Function.prototype.apply(thisArg) ,argArray);
Function.prototype .call(thisArg[,arg1[,arg2…]]);

関数のプロトタイプからわかるように、最初のパラメーターの名前は thisArg、
つまり、すべての関数内の this ポインターは thisArg に割り当てられます。
これにより、関数を別のオブジェクトのメソッドとして実行するという目的が達成されます。
thisArg パラメータを除き、両方のメソッドは Function オブジェクトに渡されるパラメータです。
*/

//属性 p とメソッド A を使用して関数 func1 を定義します。
function func1(){
this.p="func1-";
this.A = function(arg){
alert(this.p arg);
}
}
// 属性 p とメソッド B を持つ関数 func2 を定義します
function func2(){
this.p="func2-";
this.B=function(arg){
alert(this.p arg)
}
}
var obj1=new func1 () ;
var obj2=new func2();
obj1.A("byA"); //func1-byA を表示
obj2.B("byB"); >obj1.A.apply(obj2,["byA"]); // func2-byA を表示します。ここで、["byA"] は 1 つの要素のみを持つ配列であり、以下の
obj2.B.apply( obj1,["byB"]); // func1-byB を表示
obj1.A.call(obj2,"byA") // func2-byA を表示
obj2.B.call(obj1,"byB) "); //Display func1-byB
/*
obj1 のメソッド A が obj2 にバインドされて実行された後、
関数 A の実行環境全体が obj2 に転送されることがわかります。 obj2 を指す this ポインタです。
同様に、obj2 の関数 B を obj1 オブジェクトにバインドして実行することもできます。
コードの最後の 4 行は、apply 関数と call 関数のパラメーター形式の違いを示しています。
*/



/*
は引数の長さ属性とは異なります。
関数オブジェクトにも長さという属性があります。関数の定義時に指定されるパラメータの数、
*/
function sum(a,b){
return a b; の代わりに
alert(合計 .length);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。