我想獲得這樣的如何實現instanceof作爲接收字符串的函數?
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');
[...]
的問題是,場也所需BASECONTROL,所以在這種情況下,現場是不確定的,並且我收到以下錯誤:
Uncaught TypeError: Expecting a function in instanceof check, but got false
我可以解決這個問題下面requireJS做cumentation:
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');
[...]
哦,加分使用ECMA標準功能(所以我會嘗試儘可能地避免__proto__ ...) – opensas 2013-02-24 00:24:21
爲什麼你沒有範圍內的構造函數?那麼它的範圍是什麼? – Bergi 2013-02-24 01:12:04
我正在使用requireJS,如果我需要構造函數,我會得到一個循環引用,所以我正在尋找一種方法來驗證參數的類型而不需要它。 – opensas 2013-02-24 06:10:52