instanceof

JavaScript的原型继承

三世轮回 提交于 2020-01-24 14:57:18
JavaScript是一门面向对象的语言。在JavaScript中有一句很经典的话,万物皆对象。既然是面向对象的,那就有面向对象的三大特征:封装、继承、多态。这里讲的是JavaScript的继承,其他两个容后再讲。 JavaScript的继承和C++的继承不大一样,C++的继承是基于类的,而JavaScript的继承是基于原型的。 现在问题来了。 原型是什么? 原型我们可以参照C++里的类,同样的保存了对象的属性和方法。例如我们写一个简单的对象 function Animal(name) { this.name = name; } Animal.prototype.setName = function(name) { this.name = name; } var animal = new Animal("wangwang"); 我们可以看到,这就是一个对象Animal,该对象有个属性name,有个方法setName。要注意,一旦修改prototype,比如增加某个方法,则该对象所有实例将同享这个方法。例如 function Animal(name) { this.name = name; } var animal = new Animal("wangwang"); 这时animal只有name属性。如果我们加上一句, Animal.prototype.setName =

JAVA中的instanceof用法

会有一股神秘感。 提交于 2020-01-23 15:24:34
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 用法: result = object instanceof class 参数: Result:布尔类型。 Object:必选项。任意对象表达式。 Class:必选项。任意已定义的对象类。 说明: 如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。 但是instanceof在Java的编译状态和运行状态是有区别的: 在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。 在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。 例子: 接口Person public interface Person { public void eat ( ) ; } 实现类People public class People implements Person { private

When “if else”/“instance of” are inevitable, how do we improve the design apart from using visitor pattern?

偶尔善良 提交于 2020-01-23 07:07:52
问题 When we have an object hierarchy that is purely a inheritance of semantic and not of behaviors,then inevitably we need to write "instanceof" or "if/else" everywhere to do run time type checking. E.g. If I have a object hierarchy which has Class Function Class Average extends Function Class Sum extends Function Class Max extends Function If there is a method called calculate() in these classes, then we do not have problem, we can just take the advantage of polymorphism and this design

extracting data from typing types

微笑、不失礼 提交于 2020-01-22 19:10:48
问题 I am having some issues working with the typing types in Python for any more than type hinting: >>> from typing import List >>> string_list = ['nobody', 'expects', 'the', 'spanish', 'inqusition'] >>> string_list_class = List[str] Now I would like to Check if string_list conforms to string_list_class . Check if string_list_class is a list. If so, check the class, that string_list_class is a list of. I find myself unable to achieve any of those: >>> isinstance(string_list, string_list_class)

小白学Java:奇怪的RandomAccess

谁说我不能喝 提交于 2020-01-20 21:15:38
目录 小白学Java:奇怪的RandomAccess RandomAccess是个啥 forLoop与Iterator的区别 判断是否为RandomAccess 小白学Java:奇怪的RandomAccess 我们之前在分析那三个集合源码的时候,曾经说到:ArrayList和Vector继承了 RandomAccess 接口,但是LinkedList并没有,我们还知道继承了这个接口,就意味着其中元素支持 快速随机访问(fast random access) 。 RandomAccess是个啥 出于好奇,我特意去查看了RandomAccess的官方文档,让我觉得异常惊讶的是!这个接口中啥也没有!是真的奇怪!(事实上和它类似的还有 Cloneable 和 java.io.Serializable ,这俩之后会探讨)只留下一串冰冷的英文。 Marker interface used by List implementations to indicate that they support fast (generally constant time) random access . The primary purpose of this interface is to allow generic algorithms to alter their behavior to provide

使用Akka的远程调用

丶灬走出姿态 提交于 2020-01-20 03:17:26
概述   正如其它RPC或者RMI框架那样,Akka也提供了远程调用的能力。服务端在监听的端口上接收客户端的调用。本文将在 《Spring与Akka的集成》 一文的基础上介绍Akka的remote调用,本文很多代码和例子来源于Akka官网的代码示例,也包含了一些适用于Spring集成的改造,本文旨在介绍Akka的远程调用的开发过程。 服务端开发 配置   Akka的默认配置文件为application.conf,如果不特别指明,Akka System都会默认加载此配置。如果你想自定义符合你习惯的名字,可以使用如下代码: final ActorSystem system = ActorSystem.create("YourSystem", ConfigFactory.load("yourconf")); 上述代码中的yourconf不包含文件后缀名,在你的资源路径下实际是yourconf.conf。   我不太想自定义加载的配置文件,而是继续使用application.conf,这里先列出其配置: include "common" akka { # LISTEN on tcp port 2552 remote.netty.tcp.port = 2552 } 这里的remote.netty.tcp.port配置属性表示使用Netty框架在TCP层的监听端口是2552

day3 java

久未见 提交于 2020-01-20 00:29:14
Java 简介 面向对象、分布式、健壮、安全、中立、可移植多线程等 环境配置 https://blog.csdn.net/weixin_39310910/article/details/90024524 https://www.runoob.com/java/java-environment-setup.html Eclipse https://www.onlinedown.net/soft/32289.htm 基本语法 对象 :对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类 :类是一个模板,它描述一类对象的行为和状态。 方法 :方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。 实例变量 :每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。 大小写敏感 : Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。 类名 :对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。 方法名 :所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。 源文件名 :源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存

你需要知道的 JavaScript 类(class)的这些知识

ⅰ亾dé卋堺 提交于 2020-01-16 20:40:04
作者: Dmitri Pavlutin 译者:前端小智 来源:dmitripavlutin 点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料。欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 JavaScript 使用原型继承:每个对象都从原型对象继承属性和方法。 在 Java 或 Swift 等语言中使用的传统类作为创建对象的蓝图,在 JavaScript 中不存在,原型继承仅处理对象。 原型继承可以模拟经典类继承。为了将传统的类引入JavaScript, ES2015 标准引入了 class 语法,其底层实现还是基于原型,只是原型继承的语法糖。 这篇文章主要让你熟悉 JavaScript 类:如何定义类,初始化实例,定义字段和方法,理解私有和公共字段,掌握静态字段和方法。 1. 定义:类关键字 使用关键字 class 可以在 JS 中定义了一个类: class User { // 类的主体 } 上面的代码定义了一个 User 类。 大括号 {} 里面是类的主体。 此语法称为 class 声明。 如果在定义类时没有指定类名。可以通过使用 类表达式 ,将类分配给变量: const UserClass = class { // 类的主体 }

JS实现继承的几种方式

…衆ロ難τιáo~ 提交于 2020-01-16 08:24:24
首先定义一个构造类: function Father(){   this.adress = '深圳';    this.getAdress = function(){      console.log('住在'+this.adress)   } } 在其原型上添加一个自定义方法: Father.protootype.getMoney =function() {    console.log('有很多钱') } 一、原型链继承:子类的原型指向父类的实例 function Son(){ } Son.prototype = new Father(); Son.prototype.name = ‘son1’; var son1 = new Son(); console.log(son1.adress);// 深圳 console.log(son1.getAdress ());// 住在深圳 console.log(son1.getMoney ());// 有很多钱 console.log(son1 instanceof Father); //true 二、构造继承:假继承 function Son(name){ Father.call(this); this.name = 'son2'; } var son2= new Son(); console.log(son2.name);//

判断某个对象属于哪种数据类型

邮差的信 提交于 2020-01-16 05:46:45
type instanceof Object.prototype.toString.call type 在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。 对于数组、函数、对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串。 instanceof var a = {}; var b = []; var c = function () {}; //a b c 都是 Object 的实例 console.log(a instanceof Object) //true console.log(b instanceof Object) //true console.log(c instanceof Object) //true //只有 Array 类型的 b 才是 Array 的实例 console.log(a instanceof Array) //false console.log(b instanceof Array) //true console.log(c instanceof Array) //false //只有 Function 类型的 c 才是 Function 的实例 console.log(a