如何检查原型函数是否存在?检查javascript中是否存在函数
多一点解释:
正如你可以在示例代码中看到的,我将永远有两个X1
和X2
一个commonFunction()
。
我想告诉你X1
和X2
有他们自己的myOwnFunction()
。
重要的是要注意到,第一手我不知道我会打电话给哪个功能。这就是为什么我需要一种动态的方式来收集这些信息。
CODE:
function FunctionMain(){};
FunctionMain.FunctionSub = new FunctionSub();
function FunctionX1()
{
FunctionX1.prototype.commonFunction = function()
{
console.log("Hello, I'm X1");
}
FunctionX1.prototype.myOwnFunctionX1 = function()
{
console.log("This my own function");
}
}
function FunctionX2()
{
FunctionX2.prototype.commonFunction = function()
{
console.log("Hello, I'm X2");
}
//I don't have myOwnFunctionX2()
}
function FunctionSub()
{
FunctionSub.prototype.FunctionX1 = new FunctionX1();
FunctionSub.prototype.FunctionX2 = new FunctionX2();
}
//This call works!
FunctionMain.FunctionSub.FunctionX1.commonFunction();
FunctionMain.FunctionSub.FunctionX2.commonFunction();
//what kind of test should I use?
if(typeof "FunctionMain.FunctionSub.FunctionX1.myOwnFunctionX1" == "function")
{
console.log("It exists!");
}
if(typeof window["FunctionMain.FunctionSub.FunctionX1.myOwnFunctionX1"] == "function")
{
console.log("It exists!");
}
FIDDLE:http://jsfiddle.net/matias/FTzjW/
当在达到最终结果之前上下文变得未定义时会发生什么?编辑:我看到这正是你的小提琴中发生的事情。 – Adam
@亚当我很抱歉,我不了解你。你能解释我吗? –
仍然在构造函数体内设置原型,这是错误的。你有什么想法是什么样的原型? http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711检查对象有什么属性可以使用'for(something in myObject)'hasOwnProperty'并且上去构造函数' myObject = myObject.constructor'直到你到达Function。但是现在你继承的方式是销毁对象原型的构造函数属性。 – HMR