私はこのようなものを手に入れたいです
var isChild = isInstanceOf( var1, 'Constructor')
それは同等でなければなりません
var isChild = (var1 instanceof Constructor)
問題は、関数 Constructor をスコープで使用できないため、文字列を渡したいだけです。
を取得して比較するには、プロトタイプチェーンをたどる必要があると思いconstructor.toString()
ますが、それを達成する方法がよくわかりません。
--
主により良い解決策を見つけたので、コンテキストを少し完成させます
2 つの関数コンストラクター間で循環参照があり、参照しようとすると RequireJS が undefined を返し続けました。(上記の場合、コンストラクターは未定義になります。)
この情報を見つけました:http://requirejs.org/docs/api.html#circular
これは問題の原因となったコードです:
//(in BaseControl.js)
define(['src/utils/models/Field'],
function(Field) {
[...]
setField: function(field) {
if (!field instanceof Field) throw new Error('field should be an instance of Field');
[...]
問題は、Field にも BaseControl が必要であるため、この場合 Field は定義されておらず、次のエラーを受け取りました。
Uncaught TypeError: Expecting a function in instanceof check, but got false
次のrequireJSドキュメントで解決できました:
define(['require', 'src/utils/models/Field'],
function(require, Field,) {
[...]
setField: function(field) {
if (!Field) Field = require('src/utils/models/Field');
if (!field instanceof Field) throw new Error('field should be an instance of Field');
[...]