构造函数 函数域

要想搞明白构造函数,就要先弄懂什么是函数?以及js中有哪几种函数的创建形式。
什么是函数?
函数简单的说就是重复执行的代码块;按照JavaScript 权威指南(第六版)
书中的说法:函数是这样的一段JavaScript 代码,它只定义一次,但可能被执行或调用任意次。
        Js 中有哪几种创建形式呢? 
        函数使用function 关键字来定义,其后跟随,函数名称标识符、 一对圆括号、一对花括号。 JavaScript 中有三种创建形式,分别是:
   ①         声明式 
function fn( ){ };   这种定义的方式,无论在哪儿定义,别处都可以调用 ;
   ②         函数的字面量或叫直接量或称表达式
var fn=function () { }; 此时函数作为表达式存在,调用只能在定义的后面;  
解释一下表达式:凡是将数据和运算符等联系起来有值得式子就是表达式。
   ③         以new Function 的形式
var fn = new Function (arg1 , arg2 ,arg3 ,…, argN , body  ) 
解释:
        Function 构造函数所有的参数都是字符串类型。除了最后一个参数, 其余的参数都作为生成函数的参数即形参。这里可以没有参数。最后一个参数, 表示的是要创建函数的函数体。

另外,js 中任意函数都是Function 的实例。
有了以上的铺垫 就可以来说明什么是构造函数了:
构造:它是设计,组合。将没有的东西先概念实现,比如建筑图纸
构造函数:首先,它是函数,并且任何的函数都可以作为构造函数存在 ,它的本质是初始化对象。构造函数都是和new  关键词一起使用的。 new 就是在创建对象,从无到有,构造函数就是在为初始化的对象添加属性和方法( 成员 ) 好比:
                            this.name = xiaoming;
                            this.age = 10;
                            this.gender = ‘男‘; 
其实刚才的创建函数的第三种方法就是利用构造函数的方式实现的 
如: var obj = new Person( “xiaoming ”, 10 ,” 男” )  ;
有了构造函数,那构造对象就成以下四步了:
                         1, new 申请内存, 创建对象
                         2, 调用构造函数, 构造函数有一个隐式参数, 即 this
                         3, 刚创建出来的对象的引用 赋值给 this, 由函数处理. 
                         4, 在构造函数中利用 this.成员 = 值 来给对象添加成员 .
以一个典型的案例结尾 :
Function  Person( name,age,gender  ) { 
                this.name = name;
                this.age=age;
                this.gender = gender;
                this.sayHello = function () {
                        console.log( ‘Hello ‘+ name );
                };
}
           var P1= new Person(‘jim‘,10, ‘男’);
           var P2= new Person(tom,20, ‘女);

时间: 2024-11-09 16:17:36

构造函数 函数域的相关文章

【转载】C++拷贝构造函数(深拷贝,浅拷贝)

对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面看一个类对象拷贝的简单例子. #include <iostream>using namespace std;class CExample {private:     int a;public:     CExample(int b)     { a=b;}     void Show ()     {        cout<

C++程序设计方法3:移动构造函数

移动拷贝构造函数 语法: ClassName(ClassName&&); 目的: 用来偷"临时变量"中的资源(比如内存) 临时变量被编译器设置为常量形式,使用拷贝构造函数无法将资源偷出来("偷"是对原来对象的一种改动,违反常量的限制) 基于"右值引用"定义的移动构造函数支持接受临时变量,能偷出临时变量中的资源: #include <iostream> using namespace std; class Test {

父类的构造函数在对象的生命中扮演的角色

在创建新对象时,所有继承下来的构造函数都会被继承 这代表着每个父类都有一个构造函数(因为每个类至少都会有一个构造函数),并且每个构造函数都会在对象创建时执行. 执行new的指令是个大事件,因为他会启动构造函数的连锁反应.还有,就算是抽象的类也有构造函数.虽然你不能对抽象函数执行new操作,但是抽象函数还是父类,因此它的构造函数会在具体的子类创建实例时被执行. 在构造函数中用super调用父类的构造函数部分(注意:调用super() 方法是调用父类构造函数的唯一方法).要记得子类会根据父类的状态进

JavaScript中的构造函数

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

javascript中的构造函数和原型及原型链

纯属个人理解,有错误的地方希望大牛指出,以免误人子弟 1.构造函数: 构造函数的作用 : 初始化由new创建出来的对象    new 的作用: 创建对象(空对象) new 后面跟的是函数调用,使用new来调用函数,跟普通的直接调用函数主要的不同: 就是 this 的指向不同了 , 再就是 会自动的返回新创建的对象 什么是原型?        原型的作用:就是为了实现继承!  一个对象的原型就是它的构造函数的prototype属性的值. 在讨论原型的时候,是指的 对象和原型对关系 prototyp

Resolve Type中构造函数传值

1 1 class Test 2 { 3 4 private ITeacher _teacher; 5 private IStudent _student; 6 public Test(ITeacher tea, IStudent stu) 7 { 8 _teacher = tea; 9 _student = stu; 10 } 11 } 2 1 class Student:IStudent 2 { 3 4 public Student() 5 { 6 int i = 1; 7 } 8 9 10

构造函数、拷贝构造函数、赋值操作符

对于这样一种类与类之间的关系,我们希望为其编写“深拷贝”.两个类的定义如下: class Point { int x; int y; }; class Polygon : public Shape { Point *points; }; 1. 构造函数 //构造函数 Polygon(const Point &p) : _point(new Point) { this->_point->x = p.x; this->_point->y = p.y; } 2. 拷贝构造函数 /

JAVA_SE基础——29.构造函数

黑马程序员入学Blog... jvm创建Java对象时候需要调用构造器,默认是不带参数的.在构造器中,你可以让jvm帮你初始化一些参数或者执行一系列的动作. 它是对象创建中执行的函数,及第一个被执行的方法 特点: 1.函数名与类名相同. 2.不用定义返回值类型. 3.没有具体的返回值. P.S. 在构造函数前面加上返回值就只是一般函数了. 作用:给对象进行初始化. class Person{ private String name ; private int age ; //定义一个Person

C++ 构造函数和析构函数

构造函数: 作用: 1)分配空间:分配非静态数据成员的存储空间 2)初始化成员:初始化非静态数据成员 分配空间: 1)含有指针变量,需要程序员显式申请空间(使用new申请) 2)非指针变量:由系统自动分配空间 初始化成员: 1)使用赋值语句初始化:一般的变量 2)使用表达式表初始化:一般的变量 +  Const成员,引用成员,对象成员 调用时机:在定义对象的时候,系统自动调用构造函数 1)对象被创建时,自动调用构造函数 Coord p1(1); Coord p2=1;  //此时也会调用构造函数