钛工作室内的javascript:';新';在对象中
我在非浏览器环境(Titanium Studio)中有以下代码,我注意到result1和result2都工作,返回相同的结果,并且是相同的类型(对象) 你能解释一下它们在任何方面是否不同,以及它们是如何不同的吗 在我的例子name1中,没有对本地上下文的引用(这里没有“this”,只有本地变量),我试图弄清楚当我遇到下面这样的情况时,我是否应该使用“new”编写所有代码钛工作室内的javascript:';新';在对象中,javascript,titanium,new-operator,Javascript,Titanium,New Operator,我在非浏览器环境(Titanium Studio)中有以下代码,我注意到result1和result2都工作,返回相同的结果,并且是相同的类型(对象) 你能解释一下它们在任何方面是否不同,以及它们是如何不同的吗 在我的例子name1中,没有对本地上下文的引用(这里没有“this”,只有本地变量),我试图弄清楚当我遇到下面这样的情况时,我是否应该使用“new”编写所有代码 var name1 = function(some_arg){ // some stuff return re
var name1 = function(some_arg){
// some stuff
return result; // returns an object
}
var result1 = name1('some_value');
var result2 = new name1('some_value');
typeof(result1); // returns object
typeof(result2); // returns object
谢谢
下面编辑:原来的问题已经回答了,我现在正在寻找相关问题的澄清。
与以下评论相关的代码:
function Name1 (name){
this.name = name;
}
var version1 = new Name1('joey');
version1.name;
var Name2 = function(name){
this.name = name
}
var version2 = new Name2('joey');
version2.name;
谢谢
this
在使用new
时绑定到新对象,而在不使用new
时,它将绑定到全局对象。如果您在构造函数或添加到对象中的任何方法中不使用this
,这确实无关紧要-但是,您无论如何都应该使用它,否则如果您使用它,您将遇到问题。太好了。谢谢如果我将函数用作构造函数,那么:var name=function(){}与:function name(){}相同吗?谢谢。不,这只是将函数赋给一个变量,非常类似于函数名(){}
(除了被提升到作用域的顶部)-将函数用作构造函数意味着用新的调用它。对不起,我现在有点困惑。我将重新措辞这个问题。。。我在上面的原始问题中添加了另一段代码(新代码在粗体编辑注释下面)。因此上面的version1.name和version2.name都返回“joey”。他们有什么不同吗?如果是,怎么做?谢谢它们有不同的构造函数。很像两个不同的类,它们除了类名之外是相同的。