构造函数复习

构造函数是什么?

  构造函数是用来给初始化的实例化对象赋值

执行过程

  1.使用new关键字创建出来一个新的对象

  2.构造函数把新建的对象赋值给函数内的this对对象

  3.在函数内通过this关键字给新建的对象添加成员

  4.默认返回新建的对象

注意事项

  1.构造函数名最好大写

  2.和new一起使用

  3.如果手动设置返回值

    a) return 一个基本类型数据(包括undefined和null),函数仍然返回新建的这个对象

    b) return一个Object类型的数据,函数将返回这个Object

  4.如果调用函数的时候不给构造函数实参,构造函数不会创建新对象,里面的this将会指向window,添加的属性也会添加给window

什么是原型? 

  在构造函数创建出来的时候,系统会默认创建一个神秘对象与之关联,这个神秘对象就是原型

原型的作用?

  原型中的属性和方法可以被所有 由 与之关联的构造函数实例化出来的对象 所共享

  可以拓展内置对象

如何获取原型

  构造函数.prototype

  实例化对象.__proto__

原型的使用方式

  直接替换原型

    在替换原型之前创建的对象的原型    和     在替换之后创建的对象的原型不是同一个

    替换不是修改,是整体替换.

  利用对象的动态特性给原型添加成员(

  (成员:属性和方法的总称)

  .cosntructor:原型函数指向该原型的构造函数

  a)  点语法进行属性赋值的时候,不会去原型查找

  b)  使用点语法赋值的时候,如果对象中不存在该属性,就会对该对象新增属性,不会去原型中查找

时间: 2024-09-29 17:40:28

构造函数复习的相关文章

C++类转换构造函数和转换函数复习

//C++类转换构造函数和转换函数复习 #include<iostream> #include<string> using namespace std; class Student { private: string name; int age; double grade; public: Student(string name_, int age_, double grade_):name(name_), age(age_), grade(grade_){} Student(){

underscore 复习 对象函数 篇章

_.partial = function(func) { var boundArgs = slice.call(arguments, 1); var bound = function() { var position = 0, length = boundArgs.length; var args = Array(length); for (var i = 0; i < length; i++) { args[i] = boundArgs[i] === _ ? arguments[positio

JavaScript构造函数的继承

我们已经在使用JavaScript的构造函数,来创建自己的自定义对象类型.但是,我们并没有看到如何创建一个继承层次结构. 重要的是,虽然构造函数通常被称为“类”,但他们真的是不一样的东西.在JavaScript中,一个构造函数就是在new一个对象时调用的函数. 这里有一个小复习: function SuperHuman (name, superPower) { this.name = name; this.superPower = superPower; } SuperHuman.prototy

Objective-C-类(static)方法、实例方法、overwrite(覆写)、属性(property)复习

先来定义一个Human父类 定义部分: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // //  Human.h //  OOP // //  Created by jimmy.yang on 11-2-9. //  Copyright 2011 __MyCompanyName__. All rights reserved. // #import <Foundation/Foundation.h> @interface Human :

Java复习——枚举与注解

枚举 枚举就是让某些变量的取值只能是若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译阶段就控制程序的值,这一点是普通变量无法实现的.枚举是作为一种特殊的类存在的,使用的是enum关键字修饰 枚举常量 枚举常量默认都是使用static final修饰的,所以语法建议使用大写,一个枚举类在第一次被实例化的时候,这些常量就会被创建,这些常量都是枚举类子类的对象 public enum WeekDay{ //每一个枚举的元素(枚举常量)就是一个枚举类子类的对象,是使用static fina

C++构造函数(一)

本篇是介绍C++的构造函数的第一篇(共二篇),属于读书笔记,对C++进行一个系统的复习. 构造函数的概念和作用 全局变量未初始化时为0,局部变量未初始化时的值却是无法预测的.这是因为,全局变量的初始化是再程序装载时便一次性完成的,自动地初始化为零并不会有额外的开销,因此编译器默认初始化为零.但是对局部变量并没有这样的操作,需要程序去完成初始化. 基本类型变量的初始化只需要在定义时赋值就可以了,但是对于对象的初始化,情况就要复杂一些.比如,有的对象需要在创建时就令某个指针指向一块内存空间,这就涉及

黑马程序员----面向对象复习笔记

------- android培训.java培训.期待与您交流! ---------- 总结完就忘了的知识点,复习时候再做个记录 1. this:成员变量和局部变量重名时候使用,this指代本类对象 而且还可以在构造函数中调用其他构造函数,但是必须放在第一行,因为初始化要先执行. 2.成员变量和静态变量差异 成员变量:实例变量,随着对象创建而存在,对象被回收而消失,存在对象堆内存中,只能被                对象调用 静态变量:类变量,随着类存在而存在,类的消失而消失,存在共享数据区

Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序

前言 今天在看Android ContentProvider实现的时候,突然想到了Java类在new的过程中,静态域.静态块.非静态域.非静态块.构造函数的执行顺序问题.其实这是一个很经典的问题,非常考察对Java基础知识的掌握程度.很多面试过程中相信也有这样的问题,趁着周末有时间复习一下. 结论 这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论.在Java类被new的过程中,执行顺序如下: 实现自身的静态属性和静态代码块.(根据代码出现的顺序决定谁先执行) 实现自身的非静态属性和

我们复习.Net的这些日子里

今天是我们复习前面学习的第三天,也是在今天我们结束了复习.之前上学时间感觉知识全是生僻的,在生活中很少用到,因此喜欢重复的记忆,而现在学习的知识全是现在乃至未来,将是每天我们使用的,所以就感觉没必要重复记忆啦,只要我记得知识点的存在然后会想起来具体的内容的,可是今天的复习我发现这样的做法还是不对的,也可能只是刚开始啦,太多东西都是硬性的,因此我想通过这篇文章来重新捡起来我忘记的,嘿嘿.下面就来说下具体容易忘记的和做起来题还是比较生硬的吧. 一.构造函数 构造函数方法名和类名一样,没有返回值,连v