JavaScript中构造函数

构造函数:函数的另一种执行方法,执行后创建对象,并创建原型对象。

原型链:对象访问构造函数的指针。

Function函数:函数对象。

Object函数:所有创建对象的祖辈对象,也是由Function对象实现的。

构造函数的特性:

1.构造函数声明时,语法与普通函数的完全一致,
        2.在函数体中this指针不同
        3.构造函数和普通函数相比,调用方式不同
        4. 构造函数一般用作创建一个类,遵循C#的编码规范,首字母大写。

运行下面的代码(并跟踪Func):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
	       debugger;
			function Fun(){

			}
			Fun();//普通函数的条用方式
			var fun=new Fun() //构造函数的调用方法
		</script>
	</head>
	<body>
	</body>
</html>

效果:

检测Fun.prototype的类型:

查看fun:

用普通函数调用测试this(程序没有对this包含引用,出现undefined):

给this赋值(在程序体中必须引用this 才有值):

运行如下的代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
	       debugger;
			function Fun(){
				var that1=this;
				innerFun();
				function innerFun(){

					var that2=this;

				}
			}
			Fun.userName=‘sunliyuan‘;
			Fun.innerFun2=function(){
				var that3=this;
				debugger;
			}
			debugger;
			Fun.innerFun2();
			Fun();//普通函数的条用方式

		</script>
	</head>
	<body>
	</body>
</html>

运行代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
	       debugger;
			function Fun(){
				this.id=1;
				this.name=‘sunliyuan‘;
			}

			//Fun();//普通函数的条用方式
			var fun=new Fun() //构造函数的调用方法
		</script>
	</head>
	<body>
	</body>
</html>

在构造函数中的this:

以上为对this在普通函数和构造函数与中的不同:

1.this在其他语言中代表当前对象,在js中非常灵活
             2.this 是跟当前函数的运行环境有关
             3. 对于普通函数来说,在函数体中this代表调用当前函数的运行环境对象
             4. 对于构造函数来说this 代表当前构造函数创建的对象

5.在全局环境中this代表全局环境(window对象)

构造函数:new Fun的执行过程:

1.创建一个空obj对象

2.空对象的原型链(__proto__)指向了函数对象prototype对象

3.修改函数的this指针为新创建的对象引用。

4.执行函数体(普通函数只执行第四步)

时间: 2024-10-13 22:02:13

JavaScript中构造函数的相关文章

Javascript中构造函数的返回值问题和new对象的过程

首先明确一点:javascript中构造函数是不需要有返回值的,这一点跟java很类似.可以认为构造函数和普通函数的最大差别就是:构造函数中没有return语句,普通函数可以有return语句:构造函数中会使用this关键字定义成员变量和成员方法,普通的函数不会使用this关键字定义成员变量和方法. function Person(name,sex) { this.name = name; this.sex = sex; // return 1; //return true; //return

深入理解Javascript中构造函数和原型对象的区别

在 Javascript中prototype属性的详解 这篇文章中,详细介绍了构造函数的缺点以及原型(prototype),原型链(prototype chain),构造函数(constructor),instanceof运算符的一些特点.如果对prototype和构造函数不熟悉,可以前往Javascript中prototype属性的详解 和 Javascript 中构造函数与new命令的密切关系 仔细的品味品味.先来做一个简单的回顾. 首先,我们知道,构造函数是生成对象的模板,一个构造函数可以

javascript中构造函数知识总结

构造函数的说明 1.1 构造函数是一个模板 构造函数,是一种函数,主要用来在创建对象时对 对象 进行初始化(即为对象成员变量赋初始值),并且总是与new运算符一起使用. 1.2 new 运算符 new运算符创建一个新对象.关键字new后跟随一个函数调用. 这里的函数称做:构造函数(constructor),构造函数用以初始化一个新创建的对象. new的作用:创建一个新对象(实例) 注:这个对象可以是用户自定义的,也可以是系统自带的 1.3 创建对象步骤 1 new 申请内存, 创建对象 2 将新

javascript中构造函数的说明

1.1 构造函数是一个模板 构造函数,是一种函数,主要用来在创建对象时对 对象 进行初始化(即为对象成员变量赋初始值),并且总是与new运算符一起使用. 1.2 new 运算符 new运算符创建一个新对象.关键字new后跟随一个函数调用. 这里的函数称做:构造函数(constructor),构造函数用以初始化一个新创建的对象. new的作用:创建一个新对象(实例) 注:这个对象可以是用户自定义的,也可以是系统自带的 1.3 创建对象步骤 1 new 申请内存, 创建对象 2 将新对象的引用赋值给

javascript中构造函数的三种方式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> // 创建函数的三种方式: // 1 函数声明 // 2 函数表达式 //

Javascript中prototype属性的详解

原文链接:http://www.cnblogs.com/Uncle-Keith/p/5834289.html 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的’,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对

Javascript中数组方法以及数组方法的扩展--基础篇

最近一直在努力的恶补javascript中的各种知识,比如说闭包,作用域,继承,构造函数,变量,内置对象等概念.同时,也在学习着ES6的新知识.最近想给大家分享的就是数组实例方法的练习以及如何去扩展一个数组方法. 以下的分享会分为如下内容 1.数组实例方法的练习 1.1:reduce() 1.2:map() 1.3:sort() 1.4:slice() 1.5:push() 1.6:实例方法习题 2.数组方法的扩展 1.数组实例方法的练习 首先,我们应该知道数组实例方法有哪些. console.

JavaScript中的构造函数

function Accom(){};    //创建一个构造函数 //创建两个对象 var house=new Accom(); var apartment=new Accom(); 通过构造函数创建的对象有一个属性constructor,这个属性指向创建该对象时所用的Javascript构造函数. house.constructor===Accom;  或者   house instanceof Accom;     //true JavaScript中的每个构造函数都有一个prototyp

JavaScript中以构造函数的方式调用函数

转自:http://www.cnblogs.com/Saints/p/6012188.html 构造器函数(Constructor functions)的定义和任何其它函数一样,我们可以使用函数声明.函数表达式或者函数构造器(见以前的随笔)等方式来构造函数对象.函数构造器和其它函数的区别在与它们的调用方式不同. 要以构造函数的方式调用函数,只需要在调用时在函数名称前加new 关键字,比如:function whatsMyContext(){ return this; }; 调用:new what