Would you like to react to this message? Create an account in a few clicks or log in to continue.
搜索
 
 

结果按:
 


Rechercher 高级搜索

关键词

最新主题
» js在html中的加载执行顺序
JS中的构造函数解析                                                        Empty10/09/13, 06:50 am 由 design_ss

» javascript 函数的方法call()和apply()
JS中的构造函数解析                                                        Empty09/09/13, 05:10 am 由 design_ss

» JS中typeof与instanceof的区别
JS中的构造函数解析                                                        Empty08/08/13, 11:10 am 由 design_ss

» JS中的构造函数解析
JS中的构造函数解析                                                        Empty08/08/13, 09:44 am 由 design_ss

» js对象属性方法大总结
JS中的构造函数解析                                                        Empty08/08/13, 08:46 am 由 design_ss

» js中的值类型和引用类型小结 文字说明与实例
JS中的构造函数解析                                                        Empty08/08/13, 06:35 am 由 design_ss

» CSS3中轻松实现渐变效果
JS中的构造函数解析                                                        Empty05/07/13, 09:48 am 由 design_ss

» jQUery 常用实例
JS中的构造函数解析                                                        Empty03/07/13, 09:56 am 由 design_ss

» mask_layer 遮照
JS中的构造函数解析                                                        Empty03/07/13, 08:18 am 由 design_ss

十一月 2024
周一周二周三周四周五周六周日
    123
45678910
11121314151617
18192021222324
252627282930 

日历 日历

合作伙伴
免费论坛

免費論壇




JS中的构造函数解析

 :: 前端制作 :: js

向下

JS中的构造函数解析                                                        Empty JS中的构造函数解析

帖子  design_ss 08/08/13, 09:44 am

在JavaScript中,任何合法的函数都可以作为对象的构造函数,这既包括系统内置函数,也包括用户自己定义的函数。一旦函数被作为构造函数执行,它内部的this属性将引用函数本身。
通常来说,构造函数没有返回值,它们只是初始化由this指针传递进来的对象,并且什么也不返回。如果一个函数有返回值,被返回的对象就成了new表达式的值。从形式上看,一个函数被作为构造函数还是普通函数执行的唯一区别,是否用new运算符。
 
上面的描述事实上有着更为精确的含义,这要把函数如果有返回值的情况分为函数的返回值是引用类型和值类型两种情况。
 
如果一个函数的返回值是引用类型(数组,对象或者函数)的数据,那么这个函数作为构造函数用new运算符执行构造时,运算的结果将被它的返回值取代,这时候,构造函数体内的this值丢失了,取而代之的是被返回的对象。例如:
function test()
{
   this.a=10;
   return function()
   {
      return 1;
   }
}
alert m=new test();
var n=test();
alert(m);//返回return后面的闭包

alert(n);//返回return 后面的闭包

运行结果m的值和n的值是一样的,都是test函数返回的闭包,而this引用的对象和this.a=10的赋值结果全部被丢弃。
 
如果一个函数的返回值是一个值类型,那么这个函数作为构造函数用new运算符执行构造时,它的返回值将被丢弃。new 表达式的结果仍然是this所引用的对象。
function test()
{
   this.a=10;
    return 1;
}
alert m=new test();
var n=test();
alert(m)//返回【Object】

alert(n)//返回1.

design_ss

帖子数 : 122
积分 : 373
威望 : 0
注册日期 : 11-12-28

返回页首 向下

返回页首


 :: 前端制作 :: js

 
您在这个论坛的权限:
不能在这个论坛回复主题