构造函数

面向对象-2:原型链 / hasOwnProperty自身属性 / contructor / call、apply、bind改变this指向 / 原型继承 / 传值和传址 / 深拷贝 / 组合继承

最后都变了- 提交于 2020-03-16 20:25:12
原型链 原型链是指对象在访问属性或方法时的查找方式。 1.当访问一个对象的属性或方法时,会先在对象自身上查找属性或方法是否存在,如果存在就使用对象自身的属性或方法。如果不存在就去创建对象的构造函数的原型对象中查找 ,依此类推,直到找到为止。如果到顶层对象中还找不到,则返回 undefined。 2.原型链最顶层为 Object 构造函数的 prototype 原型对象,给 Object.prototype 添加属性或方法可以被除 null 和 undefined 之外的所有数据类型对象使用。 构造函数 prototype 原型链 __proto__ hasOwnProperty():看是不是对象自身底下的属性 contructor查看对象的构造函数 可以用来做判断 instanceof:对象与构造函数是否在原型链上有关系 toString()判断类型; 转换字符串 进制转换 hasOwnProperty 判断键名是否是对象自身的属性 call、apply、bind 改变this指向 call 传参的区别,传字符串 apply 传数组 bind 后面一个括号不能省略 (bind不加括号,改变指向但是现在不执行) 继承:子类继承父类所有属性和行为,父类不受影响。 目的:找到类之间的共性精简代码 继承 原型继承 简单原型继承,出现影响父类的情况 传值和传址 传址: 复杂数据类型;

c++重学笔记5 - 对象初始化

穿精又带淫゛_ 提交于 2020-03-16 20:12:09
喜欢这篇文章吗?喜欢的话去看博主的置顶博客,即可依据分类找到此文章的原版得到更好的体验, 图片及代码显示的问题,笔者深感抱歉,想要更好的体验去原博文即可。 title: c++重学笔记5 - 对象初始化 mathjax: true date: 2020-03-13 16:57:30 categories: [c++重学笔记] tags: [c++重学笔记] keywords: [c++重学笔记] 对象在使用以前一定要初始化    基本数据类型这里就不说了,直接讲类    类的对象的初始化往往使用了构造函数,但是很多人不会写构造函数,他们这样实现 # include <iostream> using namespace std ; class node { int x ; public : node ( ) { } node ( int x_ ) { x = x_ ; } } ; class my_class { node a , b , c , d ; public : my_class ( node a_ , node b_ , node c_ , node d_ ) { a = a_ ; b = b_ ; c = c_ ; d = d_ ; } } ; int main ( ) { } ``` < ! -- - more -- > & emsp ; & emsp ;

C#反射

大兔子大兔子 提交于 2020-03-16 15:17:43
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构。 应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。 程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。反射通常具有以下用途。 (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。 (2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。 (3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private

什么是反射?

时光毁灭记忆、已成空白 提交于 2020-03-16 11:12:19
1.对象有编译类型和运行类型 Object obj = new java.util.Date(); 编译类型:Object 运行类型(其实就是obj对象真实的类型):java.util.Date 需求:根据对象obj调用Date类中的一个方法,toLocaleString,如何来做? obj.toLocaleString()代码在编译阶段去编译类型Object中检查是否有该方法,若没有,编译失败. 1.对象有编译类型和运行类型 Object obj = new java.util.Date(); 编译类型:Object 运行类型(其实就是obj对象真实的类型):java.util.Date 需求:根据对象obj调用Date类中的一个方法,toLocaleString,如何来做? obj.toLocaleString()代码在编译阶段去编译类型Object中检查是否有该方法,若没有,编译失败. 解决方案1:强制转换obj为Date类型,前提:必须知道对象的真实类型是什么? Date d = (Date)obj; d.toLocaleString();//YES 如果我不知道obj的真实类型,那又如何去调用toLolcaeString方法. 如何去做? 解决方案2: 使用反射 对象使用类描述的,但是Java中一些皆对象,其实所有的类,底层都有一个字节码对象

JavaScript面向对象

限于喜欢 提交于 2020-03-15 23:19:50
概念 OO:Object Oriented(面向对象,详细概念见区别) OOP(Program)面向对象编程 OOD(Design)面向对象设计 OOA(Analysis) 区别 面向过程 关注方法步骤 在分析问题时,提取出解决问题的方法和步骤,然后通过函数一步步实现,并依次调用 面向对象 (实质是对面向过程的进一步抽象) 关注对象本身 把要解决的问题中的数据和方法组织为一个整体(对象)来看待,是我们对现实事物的抽象。 注意: 面向过程和面向对象这两种编程方式,都是用来编写程序,解决我们实际需求以及问题的。 二者示例对比:开车 面向过程的开车:先打开车门,上车,系好安全带,把车钥匙插入,点火。。。。 面向对象的开车:找一个司机,开车 基本构成 对象 (具体) 问题域中关注的具体的某一事物(对象因关注而产生) 类 (抽象) 具有相同性质和行为的一组对象的抽象(分类) 在代码中起“模具”作用 大驼峰命名是类的标志(注意:并不是说只要大驼峰命名就是类,或者不使用大驼峰命名就不是类了,只是一种标志,便于开发者区分) 关系:类是对象的抽象,对象是类的实例。 所有对象都是类创建的,所以对象又称为实例对象。用类创建对象的过程叫做实例化。 ES6语法糖 //ES6 class----模版 class Person { constructor(name, age, gender) { this

JavaScript对象——Number

Deadly 提交于 2020-03-15 16:34:08
Number 对象 Number 对象是原始数值的包装对象。 创建 Number 对象的语法: var myNum=new Number( value ); var myNum=Number( value ); 参数 参数 value 是要创建的 Number 对象的数值,或是要转换成数字的值。 返回值 当 Number() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 Number 对象。如果不用 new 运算符,把 Number() 作为一个函数来调用,它将把自己的参数转换成一个原始的数值,并且返回这个值(如果转换失败,则返回 NaN)。 Number 对象属性 FF: Firefox, IE: Internet Explorer 属性 描述 FF IE constructor 返回对创建此对象的 Number 函数的引用。 1.0 4.0 MAX_VALUE 可表示的最大的数。 1.0 4.0 MIN_VALUE 可表示的最小的数。 1.0 4.0 NaN 非数字值。 1.0 4.0 NEGATIVE_INFINITY 负无穷大,溢出时返回该值。 1.0 4.0 POSITIVE_INFINITY 正无穷大,溢出时返回该值。 1.0 4.0 prototype 使您有能力向对象添加属性和方法。 1.0 4.0 Number 对象方法 FF: Firefox,

java 的反射机制

谁都会走 提交于 2020-03-15 11:55:00
绪论 首先,什么是反射机制?   它是一种 “运行时检视类型信息”、“修改属性”、“调用方法”的一种机制, 其次,常用的运用场景有哪些? 运行时实例化类的对象。(例如:实例化一个 User 类,此 User 类的名字容器事先是不知道的) 运行时调用方法。(例如:调用 User 对象的 a 方法) 运行时修改属性值。(例如:修改 User 对象的 name 属性) 最后,温馨提示   JDK 中关于反射的相关类型都在 “java.lang.reflect” 包下,并不需要额外的第三方包来完成反射。 第一章:获取 Class对象 1、啥是 Class对象?   在 java 中,用来表示 运行时类型信息的对应类 就是 Class 类,而由此 Class 类创建出来的实例就是传说中的 “Class 对象”。 2、咋获取 Class 对象?   有三种方法,咱细品:    第一种方法:Class.forName("类的全称")      此方法适合,只知道类的字符表示(人话:类的全称)的情况 。若类还没加载此类,则加载;若类已经加载了此类,则返回已加载的类的 “Class 对象” 给你。 //like this1 Class user = Class.forName("com.User");    第二种方法:类的 Class字段      此方法适合,容器事先就知道该类的情况 。 1 /

一个不错的反射例子

若如初见. 提交于 2020-03-15 09:25:14
用于反射测试的类: using System; using System.Collections.Generic; using System.Text; namespace HelloReflection { public interface IAdd { int Add(); } public abstract class Car { private string _carName; public string CarName { get { return _carName; } set { _carName = value; } } public abstract void Run(); } public class TestClass:IAdd { public int Add() { return 10; } private int _age; private int Age { get { return _age; } set { _age = value; } } public string _smallName; public string SmallName { get { return _smallName; } set { _smallName = value; } } public string _bigName; public string BigName

java 帮助文档的制作javadoc

佐手、 提交于 2020-03-15 03:45:31
调用命令: javadoc -d doc -author -version -encoding UTF-8 -charset UTF-8 *.java -d:帮助文档生成后存放的目录 -author:在帮助文档中加入作者 -version:帮助文档中加入版本号 一个类中默认会有一个空参数的构造函数,这个默认的构造函数的权限和所属类一致。 如果类被public修饰,默认构造函数也带public修饰, 如果类没有被public修饰,默认构造函数也没有public修饰。 默认构造函数的权限随着类的变化而变化。 来源: https://www.cnblogs.com/hongxiao2020/p/12495749.html

直接初始化、拷贝初始化

随声附和 提交于 2020-03-14 18:46:02
1.直接初始化 1)直接初始化实际上是要求编译器选择 参数最匹配 的一般构造函数 2.拷贝初始化 1)拷贝初始化实际上时要求编译器将 右侧运算对象 拷贝到正在创建的对象中, 如有需要,还要进行类型转换 2)拷贝初始化通常使用拷贝构造函数来完成 3)拷贝初始化发生时机: 用等号"=" 定义 变量时(注意定义二字,不是定义的时候使用等号是调用拷贝赋值运算符) 将一个对象作为实参传递给一个非引用的形参 从一个返回类型为非引用类型的函数中返回一个对象 用花括号列表初始化数组元素或者一个聚合类中的成员(因为也用到了等号"="定义变量) 3)编译器可以“绕过”拷贝构造函数:即编译器有时 可以 进行优化( 但不是必须 ),跳过拷贝构造函数,直接使用转换构造函数构造对象 string s = "666"; //先调用转换构造函数来构造一个临时的string对象(内容为:666),再调用拷贝构造函数用这个临时对象来构造s 编译器可以优化为: string s("666"); //直接调用转换构造函数来构造对象 来源: https://www.cnblogs.com/Joezzz/p/9717699.html