我习惯使用python进行编程,但我现在正在使用javascript进行某些项目。在python中,OOP概念比我正在阅读的javascript简单易行。话虽这么说,我现在不太习惯使用javascript对象和原型。同时,我可以在不使用对象的情况下实现以下目的吗?我不是一个纯粹的程序员(总是把它当成业余爱好)所以请耐心等待我:
function func1(arg1){
does item..1..for eg...var result=arg1*2;
does item..2..for eg...var resultSq=arg*arg;
......
}
我想要其他函数,比如调用func1时的func2; funct1仅通过执行item ... 1并返回结果来响应。
换句话说,我想检测谁调用了函数并使用if语句来改变执行 对不起,如果太简单了。
答案 0 :(得分:1)
<script>
function func1()
{
if(arguments.callee.caller.toString().indexOf(" test()") != -1)
//May be optimizable with a name property
{
return "I was called from test()";
}
if(arguments.callee.caller.toString().indexOf(" test2()") != -1)
//May be optimizable with a name property
{
return "I was called from test2()";
}
}
function test()
{
return func1();
}
function test2()
{
return func1();
}
alert(test());
</script>
参考:How do you find out the caller function in JavaScript?
因为问题实际上是如何根据调用者是谁来执行不同的操作,所以需要使用if语句来检查应该执行的操作。
function doSomething(actionNumber)
{
if(actionNumber == 1)
{
return 1;
}
else if(actionNumber == 2)
{
return 1;
}
//etc...
}
function2()
{
doSomething(1);
}
答案 1 :(得分:1)
有许多模式可以创建和处理对象,这里有一个我经常使用的模式。
JavaScript原型OOP
var ConstructFoo = function () { //capitalise constructor names
var x = "my private variable";//remember, JS has FUNCTIONAL scope
this.y = 10; //we can read and write to this outside of this function
}
ConstructFoo.prototype.barMethod = function () {
return this.y * 10;
}
var bash = new ConstructFoo();//new keyword is syntactic sugar for creating a new instance
alert(bash.y);//will alert 10
alert(bash.x);//ERROR, this is undefined
alert(bash.barMethod());//will alert 100
var baz = new ConstructFoo(); //new instance, lets prove it
alert(bash === baz); //will alert false
bash = "";
alert(bash.y);//ERROR, this is undefined
alert(baz.y);//alerts 10
不要与JavaScript对象混淆:
var foo = {
funcA: function (params) {
var bar = 2;
//etc
return bar;
},
funcB: function (param) {
var bar = param * 2;
//etc
return bar;
}
};
foo.funcA(7);//returns 2
foo.funcB(2); //returns 4
这是一个静态对象。您不会创建它的新实例。如果在其他地方更改foo.funcA,它将影响使用该函数的所有代码。
推荐阅读:O&#39; Reilly的JavaScript模式