我想得到这样的东西
var isChild = isInstanceOf( var1, 'Constructor')
那应该相当于
var isChild = (var1 instanceof Constructor)
问题是我在范围内没有可用的函数构造函数,所以我只想传递一个字符串。
我想我应该遍历原型链以获得constructor.toString()
然后比较它,但我不太知道如何实现它。
--
稍微补一下上下文,主要是找到了更好的解决方案
我在两个函数构造函数之间有一个循环引用,当我尝试引用它时,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');
[...]