instanceof 和 构造函数

1. intanceof 运算符

  instanceof 运算符返回一个布尔值,表示指定对象是否为某个构造函数的实例。

  

  instanceof左边是实例对象 右边是构造函数。它的运算实质是检查右边构建函数的原型对象,是否在左边对象的原型链上。因此,下面两种写法是等价的。

  Vehicle.prototype.isPrototypeOf(v);

  instanceof的原理是检查原型链,对于那些不存在原型链的对象,就无法判断。

  Object.create(null) instanceof Object // false 上面这种继承null的特殊情况,JavaScript之中,只要是对象,就有对应的构造函数。因此,instanceof运算符的一个用处,是判断值的类型。    instanceof运算符只能用于对象,不适用原始类型的值。   
时间: 2024-10-16 01:07:41

instanceof 和 构造函数的相关文章

面向对象与原型 第一天

一.创建对象                  var box=new Object();                     //创建对象                  box.name= 'lee';                          //t添加属性                   box.run=function(){                   //添加方法                    return  this.name;          

javascript面向对象和原型

/* //工厂模式 function createObject(name,age){ var obj = new Object();//新建一个对象 obj.name=name;//新建对象的属性 obj.age=age; obj.run=function(){//新建对象的方法 return this.name+","+this.age+"...running."; } return obj;//返回新建的对象引用 } var box1 = createObjec

js类型判断及鸭式辨型

目录 instanceof constructor 构造函数名字 鸭式辨型 三种检测对象的类方式: instanceof.constructor .构造函数名字 用法如下: 1)instanceof console.log([1,2,3] instanceof Array); true console.log([1,2,3] instanceof Object); true 尽管构造函数是原型的唯一标识,instanceof运算符的右操作数是构造函数,instanceof实际计算过程中检测的是对

js中java式的类成员

function Range(from,to,x){ //实例(对象)字段 this.x=x; } //类字段 Range.Y="类字段"; //类方法 Range.s=function(){ return '类方法'; }; Range.prototype={ constructor:Range, //实例方法 slff:function(){ return "实例方法"; } }; var s=new Range(1,3,"实例字段"); c

写好你的JavaScript

关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 在实际工作中,我们应该经常会看到一些功能上没有问题,但编码风格和规范却十分糟糕的代码,这往往会让人不敢再往下阅读,甚至会影响阅读者一天的心情.这些代码不仅不易阅读,而且难以维护,它们一般会出自刚入门的编程新手,也会出自工作了好几年的老程序员手下.因此本文的目的在于帮助那些没有养成良好的编码风格,缺乏相应编码规范意识的JavaScript学习者们改善他们的编码形象. 编码形象 以上我提出了编码形象的

JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链解析)

1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = function () { console.log("Hello,my name is " + this.name) } } var P1 = new Person("Tom"); var P2 = new Person("Jim"); P1.sayHe

javascript ES3小测试

一.温故知新 做做题,总是能有温故知新的体验.这套题是2010年的了,比较老了, http://perfectionkills.com/  还有一套http://perfectionkills.com/javascript-quiz-es6 比较新ES6相关的. 在这个页面有14道ECMAScript相关的题,我试了下答错了6道题,有些知识,感觉着会了,别人说出来肯定能懂,但是自己做题却不一定对,就是因为掌握的还不够深刻,或者记忆出错等,下面来分析一下. 二.分析一下每道题的考点和原理 不会把每

web前端之MVC的JavaScript Web富应用开发一:MVC和类

web前端之MVC的JavaScript Web富应用开发一:MVC和类 开篇: 本书以 assert() 和 assertEqual() 函数来展示变量的值或者函数调用的结果. assert() 是一种快捷表述方式, 用来表示一个特定的变量( revolves to true). 这在自动化测试中是一种非常常见的模式. assert() 可以接收两个参数 : 一个值和一个可选的消息. 如果运行结果不是真值, 这个函数将抛出一个异常 : var assert = function(value,

网站前端_JavaScript-基础入门.0015.JavaScript面向对象

简单介绍: 说明: Js中的对象似乎无序属性的集合,其属性可以包含基本值,对象,函数,严格的说也就是对象是一组没有特定顺序的键值对,每个对象都是基于一个引用类型创建 /*  * 创建对象,强烈推荐字面量式创建  */ var person = {     name: '李满满',     age: 25,     job: '运维开发工程师',     sayInfo: function(){         var info = '姓名 : '+this.name+'\n'+