0

私の NPAPI プラグインでは、NPObject が関数 (つまり、関数のインスタンス) であるかどうかを判断したいと考えています。どうすればこれを行うことができますか?

NPN_HasMethod() で「call」というメソッドがあるかどうかを確認できますが、javascript の「foo instanceof Function」と同等の機能を実行できればより良い方法だと思います。

「foo」NPObject をスコープとして、「this instanceof Function」のスクリプトを使用して、NPN_Evaluate を呼び出そうとしましたが、残念ながら「this」はグローバル スコープであり、「foo」オブジェクトではありません。ここでスコープ パラメータの意図を誤解していますか? 私が見つけた例はすべて、ウィンドウを使用しています。実際のオブジェクト (または少なくとも 'this' または JavaScript オブジェクトへの参照) を使用できることは (他の多くの目的のために) 望ましいですが、それが関数であるかどうかを判断する良い方法があれば幸いです。

4

1 に答える 1

1

私が知っている唯一の方法は、NPN_Evaluationを使用して関数をグローバルjavascriptスコープに挿入し、それをNPObjectで呼び出すことです。

たとえば、次の関数を挿入します。

window.isFunction = window.isFunction || function(obj) {
  return typeof obj === 'function';
};

次に、NPAPIを使用してウィンドウのNPObjectを取得し、「isFunction」プロパティを取得してから、チェックする関数をパラメーターとして使用してNPN_InvokeDefaultを実行できます。

于 2012-10-15T16:39:57.930 に答える