instanceof

js 继承方式

半腔热情 提交于 2019-11-28 18:10:37
JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。 需要实现继承必须现有父类,首先定义一个父类。 12345678910111213 function (name) { this.name = name || 'Animal'; // 实例方法 this.sleep = function(){ console.log(this.name + '正在睡觉!'); }}// 原型方法Animal.prototype.eat = function(food) { console.log(this.name + '正在吃:' + food);}; 1. 原型链继承 核心: 将父类的实例作为子类的原型 1234567891011121314151617 function Cat(){ }Cat.prototype = new Animal();Cat.prototype.name = 'cat';// Test Codevar cat = new Cat();console.log(cat.name);console.log(cat.eat('fish'));console.log(cat.sleep());console.log(cat instanceof Animal); //true console.log(cat instanceof Cat); //true

Why can't a “Class” variable be passed to instanceof?

喜欢而已 提交于 2019-11-28 17:41:54
Why doesn't this code compile? public boolean isOf(Class clazz, Object obj){ if(obj instanceof clazz){ return true; }else{ return false; } } Why I can't pass a class variable to instanceof ? The instanceof operator works on reference types, like Integer , and not on objects, like new Integer(213) . You probably want something like clazz.isInstance(obj) Side note: your code will be more concise if you write public boolean isOf(Class clazz, Object obj){ return clazz.isInstance(obj) } Not really sure if you need a method anymore ,though. Eyal Schneider instanceof can be used only with explicit

typeof和instanceof

荒凉一梦 提交于 2019-11-28 17:38:41
typeof和instanceof属于运算符,和+ - * /是一样的。 typeof的返回值是字符串包括:'number'、'string'、'boolean'、'undefined'、'object'、'function'。它有两种写法:typeof 1 和 typeof(1)。 数字类型、NAN,typeof返回的值是number。比如说:typeof(1),返回值是number; 字符串类型,typeof返回的值是string。比如typeof(“123”返回值时string); 布尔类型,typeof返回的值是boolean。比如typeof(true)返回值时boolean; 对象、数组、null返回的值是object。比如typeof(window),typeof(document),typeof(null)返回的值都是object; 函数类型,返回的值是function。比如:typeof(eval),typeof(Date)返回的值都是function; 不存在的变量、函数或者undefined,将返回undefined。比如:typeof(abc)、typeof(undefined)都返回undefined; typeof null // 'object' typeof function() {} // 'function' typeof NaN //

Check instanceof in stream

好久不见. 提交于 2019-11-28 16:58:13
问题 I have the following expression: scheduleIntervalContainers.stream() .filter(sic -> ((ScheduleIntervalContainer) sic).getStartTime() != ((ScheduleIntervalContainer)sic).getEndTime()) .collect(Collectors.toList()); ...where scheduleIntervalContainers has element type ScheduleContainer : final List<ScheduleContainer> scheduleIntervalContainers Is it possible to check the type before the filter? 回答1: You can apply another filter in order to keep only the ScheduleIntervalContainer instances, and

How to determine if an object is an instance of certain derived C++ class from a pointer to a base class in GDB?

风流意气都作罢 提交于 2019-11-28 16:49:52
I'm debugging a C++ program with GDB. I have a pointer to an object of certain class. The pointer is declared to be of some super class which is extended by several sub-classes. There is no fields in the object to specify the precise class type of this object but some virtual functions (e.g. bool is_xxx()) are defined to tell the class type at runtime. Is there some way to tell the precise class type of an object in GDB without calling these virtual functions. Calling such functions in GDB may generate confusing result when the program is multi-threaded. Use ptype . If you use it by itself,

面向对象的三大特性

半世苍凉 提交于 2019-11-28 16:21:42
面向对象技术的三大特性:继承性、多态性和封装性。 继承性 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。 比如兔子和羊属于 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 继承的特性 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。 super 与 this 关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。 this关键字:指向自己的引用。 对于构造器而言,它只能够被调用,而不能被继承 子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的

Why does `instanceof` error rather than return `false` when used for 2 incompatible classes?

允我心安 提交于 2019-11-28 13:35:08
I'm reading this: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.20.2 They say: Consider the example program: class Point { int x, y; } class Element { int atomicNumber; } class Test { public static void main(String[] args) { Point p = new Point(); Element e = new Element(); if (e instanceof Point) { // compile-time error System.out.println("I get your point!"); p = (Point)e; // compile-time error } } } The instanceof expression is incorrect because no instance of Element or any of its possible subclasses (none are shown here) could possibly be an instance of any

类型,值和变量

烂漫一生 提交于 2019-11-28 12:23:50
1 巧转类型 js是弱类型语言 两个操作数,一个是数字,一个是字符串时: - 运算 +拼接 将变量 a 转为字符串 :a+""; 将变量 a 转为数字 : a-0; 2 == 类型不同,尝试类型转换和比较 null==undefined //true object == number | sring :尝试将对象转为基本类型 new String('hi')=='hi' //true new Object ==new Object 3 === new Object !== new Object//对象比较比的的是引用 4 包装对象 var a = "string"; console.log(a.length) //6 a.num=10; console.log(a.num) //undefined 5 类型判断操作符 (1)typeof判断 返回一个字符串,适合基础数据类型和函数对象 typeof null //object 历史原因.如果修改,大量网站无法访问.兼容问题 (2)instanceof 基于原型链判断的操作符 期望左操作数是对象,否则false,期望右操作数是函数对象或函数构造器,否则抛出typeErr异常 大概原理:判断左操作数的对象的原型链是否有右对象的prototype属性 myobj instanceof Object [1,2] instanceof

javascript-类型、值和变量

筅森魡賤 提交于 2019-11-28 12:23:22
基本类型和引用类型 MDN-JavaScript 数据类型和数据结构 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是 简单的数据段,而引用类型值指那些可能由多个值构成的对象。 其中基本类型是按值访问的,可以操作保存在变量中的实际的值: undefined 、 null 、 number 、 boolean 、 string 、 symbol (es6新增)、 BigInt (提案阶段); 引用类型是保存在内存中的对象,引用类型的值是按引用访问的: Function 、 Object ( Array 、 Date 、 RegExp ) !> 除 Object 以外的所有类型都是不可变的(值本身无法被改变),我们称这些类型的值为“原始值”。 graph LR reference_type --> Object subgraph 栈区 reference_type[Object类型引用地址] Undefined Null Number Boolean String Symbol BigInt end subgraph 堆区 Object[引用类型值] end 类型检测 typeof 类型 举例 Null typeof(null) => object Number typeof(1) => number Boolean typeof