js new一个函数和直接调用函数的区别

用new和调用一个函数的区别:如果函数返回值是一个值类型(Number、String、Boolen)时,new函数将会返回这个函数的实例对象,而如果这个函数的返回值是一个引用类型(Object、Array、Funtion)时,new函数和直接调用函数的结果相同。测试代码如下:

<script type="text/javascript">

/*//工厂模式

function Person(name,age)

{

var o = new Object();

o.name = name;

o.age = age;

o.getName = function()

{

alert(this.name);

}

return o;

}

var obj1 = new Person("liwen",25);

var obj2 = Person("liwen1",25);

obj1.getName();  //liwen*/        new一个函数的实例对象

obj2.getName();  //liwen1*/      直接调用

这里new一个函数的对象和直接调用函数产生的结果相同,都可以弹出这个函数的name属性。注意这里函数的返回值是一个Funtion对象

/*如果一个函数中存在return语句,调用这个函数的时候使用new和不使用new返回的结果是一样的吗?*/

function Test()

{

this.name = ‘test‘;

return function()

{

return true;

}

}

//var test = new Test();   //function(){return true;}      它是Object

//var test = Test();       //function(){return true;}      它是Function

//alert(new Test() == Test());   //false     这就奇怪了,两都明明是一样的,都是函数,怎么不相同的,因为js对于Object和Funtion的比较是基于引用的。

//为了进一步分辨上述情形下两者间的区别,再继续看以下代码

function Test()

{

this.name = "test";

return "test";

}

var test1 = new Test();   //Object 对象,它有一个name 属性,并且返回一个字符串test

var test2 = Test();    //test    ,它单纯是一个字符串

/*通过上面的代码,可以得出一个猜测:如果函数返回值为常规意义上的数值类型(Number、String、Boolean)时,new函数将会返回一个该函数的实例对象,而如果函数返回一个引用类型(Object、Array、Function)时,则new函数与直接调用函数产生的结果相同*/

</script>

网上看的:用new和调用一个函数的区别:如果函数返回值是一个值类型(Number、String、Boolen)时,new函数将会返回这个函数的实例对象,而如果这个函数的返回值是一个引用类型(Object、Array、Funtion)时,new函数和直接调用函数的结果相同。测试代码如下:

<script type="text/javascript">

/*//工厂模式

function Person(name,age)

{

var o = new Object();

o.name = name;

o.age = age;

o.getName = function()

{

alert(this.name);

}

return o;

}

var obj1 = new Person("liwen",25);

var obj2 = Person("liwen1",25);

obj1.getName();  //liwen*/        new一个函数的实例对象

obj2.getName();  //liwen1*/      直接调用

这里new一个函数的对象和直接调用函数产生的结果相同,都可以弹出这个函数的name属性。注意这里函数的返回值是一个Funtion对象

/*如果一个函数中存在return语句,调用这个函数的时候使用new和不使用new返回的结果是一样的吗?*/

function Test()

{

this.name = ‘test‘;

return function()

{

return true;

}

}

//var test = new Test();   //function(){return true;}      它是Object

//var test = Test();       //function(){return true;}      它是Function

//alert(new Test() == Test());   //false     这就奇怪了,两都明明是一样的,都是函数,怎么不相同的,因为js对于Object和Funtion的比较是基于引用的。

//为了进一步分辨上述情形下两者间的区别,再继续看以下代码

function Test()

{

this.name = "test";

return "test";

}

var test1 = new Test();   //Object 对象,它有一个name 属性,并且返回一个字符串test

var test2 = Test();    //test    ,它单纯是一个字符串

/*通过上面的代码,可以得出一个猜测:如果函数返回值为常规意义上的数值类型(Number、String、Boolean)时,new函数将会返回一个该函数的实例对象,而如果函数返回一个引用类型(Object、Array、Function)时,则new函数与直接调用函数产生的结果相同*/

</script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-12 04:30:34

js new一个函数和直接调用函数的区别的相关文章

js new一个函数和直接调用函数的差别

用new和调用一个函数的差别:假设函数返回值是一个值类型(Number.String.Boolen)时,new函数将会返回这个函数的实例对象.而假设这个函数的返回值是一个引用类型(Object.Array.Funtion)时,new函数和直接调用函数的结果同样.測试代码例如以下: <script type="text/javascript"> /*//工厂模式 function Person(name,age) { var o = new Object(); o.name

Js 使用new关键字调用函数和直接调用函数的区别

最近开始学习js,在看到书上的一个例子时,引发了我的一系列思考: 书上例子: function Person(name,age,job){ var o =new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return  o; } var friend=new Person("Nicholas",29,"Software Engineer&quo

Javascript 自动执行函数(立即调用函数)

开头:各种原因总结一下javascript中的自动执行函数(立即调用函数)的一些方法,正文如下 在Javascript中,任何function在执行的时候都会创建一个执行上下文,因为function声明变量和function有可能只在该function内部,这个上下文,在调用function的时候,提供一些简单的方式来创建自由变量或私有子function. eg: // 由于该function里返回了另外一个function,其中这个function可以访问自由变量i // 所有说,这个内部的f

Javascript 使用new 关键字调用函数和直接调用函数的区别

1.函数有返回值 $(function(){ function Person(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayHi=function(){ console.log(this.name); } return o; } var people= new Person('xiaowang',24,'developer');//new people.sayHi(); var people1

shell从函数文件中调用函数

碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在下面直接调用:一种是通过载入shell,在shell中直接调用:第三种是将函数写入文件,然后在其他shell中调用函数. 这里写一下关于第三种方法的例子: is_it_a_directory() { if [ $# -lt 1 ];then echo "is_it_a_directory:I need an argument" return 1 fi _DIRECTORY_

[C++程序设计]用函数指针变量调用函数

指针变量也可以指向一个函数.一个函数在编译时被分配给一个入口地址.这个函数入口地址就称为函数的指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int max(int,int); 7 int (*p)(int,int); 8 p = max; 9 int m, a, b; 10 cin >> a >> b; 11 m = p(

用函数的地址调用函数 C++ MFC

先说一段废话,幸亏我汇编基础(基础 基础 基础)扎实,否则这个问题真的恶心到我了正题  因为有特殊需求, 需要写一个类似于接口的功能,但是因为用到的次数不多再加上C++写接口各种麻烦所以想通过函数的地址调用该函数,并且能正常的传递参数.但调用过程和被调函数是不在一个类的,调用起来又是各种麻烦这几天我翻烂了百度, 都没找到方法,什么函数回调啊,通过函数地址调用函数啊,还有什么接口之类的天......最后想起来我之前用过的易语言里有人写过这个功能,打算拷贝过来,但是也有不足(稍后会说),先上翻译成C

python入门(13)获取函数帮助和调用函数

Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://docs.python.org/2/library/functions.html#abs 也可以在交互式命令行通过help(abs)查看abs函数的帮助信息. 调用abs函数: >>> abs(100) 100 >>> abs(-20) 20 >>> abs(1

js页面加载时候的调用函数的方法

方法一:jquery 中:$(function(){}) 括号内写你的内容 方法二:html <body onload=''> <script type="text/javascript"> window.onload=function()//用window的onload事件,窗体加载完毕的时候 { //do something } </script> 方法3  $().ready(function(){ alert("aaa")