1 instanceof:

1.1 普通使用下: 判断一个对象是否是某个构造函数的实例:

语法 : 对象 instanceof 函数 是则返回true,不是则返回false.

console.log(obj instanceof Object);

1.2 高级用法:

判断一个函数的原型对象,是否在实例对象的原型链上

1.3 案例如下:

var arr = [];
console.log(arr instanceof Array); //true
console.log(arr instanceof Object); //true

2 原型链

MDN文档是这样解释的:

2.1 .JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。

其中:

1 对象 调用.prototype属性,访问到原型对象.可对其操作.

2 原型对象 调用.constructor属性,访问到对象.

3 解释demo如下:

(下面举例以构造函数Person作为文档中的对象来解释).

function Person(){

 }
Person.prototype.sayName = function(){
console.log(1);
} var zs = new Person();
zs.sayName();//

4 下图为关系示意图:

以父亲(构造函数原型对象) 母亲(构造函数) 儿子(实例对象zs)来解释其间的关系.

释义:

释义1 var zs = new Person();

构造函数Person(母亲)),创造了实例对象(儿子)zs.

释义2 Person.prototype.sayName

Person通过 Person.prototype访问到(父亲)"原型对象",并添加了函数sayName.

释义3 zs.sayName();//1

(儿子)zs可以访问到,父母两对象内的所有变量和方法.

释义4 Person.prototype.constructor.prototype.sayName

(父亲)"原型对象"通过.constructor,访问到构造函数Person(母亲).

2.2 . 原型对象也可能拥有原型,并从中继承方法和属性**,一层一层、以此类推**。

这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。

关系如下图所示:

解释:

2.1 原型对象(父亲)本身,也可能作为儿子被创造出来. 即:原型对象(父亲)上面也有它的父亲母亲,去继承他们的属性方法去使用.

2.2 通过这一层层的关系,从**实例对象 ~ null **构成了一个原型链.

3 .原型链使用:

3.1 根据原型链特有的规则,我们通常在对象内添加公共属性;原型对象内添加私有属性.

4 对象查找属性的规则:

先在自己身上找属性,如果有,就直接返回,如果没有,就顺着原型链往上找

javascript总结50:认识instanceof 与 原型链的更多相关文章

  1. JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)

    JavaScript继承的6种方法 1,原型链继承 2,借用构造函数继承 3,组合继承(原型+借用构造) 4,原型式继承 5,寄生式继承 6,寄生组合式继承 1.原型链继承. <script t ...

  2. JavaScript学习总结(四)——this、原型链、javascript面向对象

    一.this 在JavaScript中this表示:谁调用当前函数this就指向谁,不知道调用者时this指向window. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是 ...

  3. javascript类继承系列二(原型链)

    原型链是采用最主要的继承方式,原理:每一个类(构造器,js中的function)都有一个原型属性(prototype)指向一个原型对象,原型对象有一个构造器(constructor),它又指回到fun ...

  4. 玩转JavaScript OOP[3]——彻底理解继承和原型链

    概述 上一篇我们介绍了通过构造函数和原型可以实现JavaScript中的“类”,由于构造函数和函数的原型都是对象,所以JavaScript的“类”本质上也是对象.这一篇我们将介绍JavaScript中 ...

  5. JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承

    说好的讲解JavaScript继承,可是迟迟到现在讲解.废话不多说,直接进入正题. 既然你想了解继承,证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考<面向对象J ...

  6. JavaScript提高篇之面向对象之单利模式工厂模型构造函数原型链模式

    1.单例模式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  7. JavaScript原型链及继承

    在JavaScript中,所有的东西都是对象,但是JavaScript中的面向对象并不是面向类,而是面向原型的,这是与C++.Java等面向对象语言的区别,比较容易混淆,因此把我自己学习的过程记录下来 ...

  8. 理解 JavaScript 对象原型、原型链如何工作、如何向 prototype 属性添加新的方法。

    JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板.从原型继承方法和属性.原型对象也可能拥有原型, ...

  9. 一张图搞懂 Javascript 中的原型链、prototype、__proto__的关系 转载加自己的总结

    1. JavaScript内置对象 所谓的内置对象 指的是:JavaScript本身就自己有的对象 可以直接拿来就用.例如Array String 等等.JavaScript一共有12内置对象    ...

随机推荐

  1. orzdba_monitor.sh脚本使用

    1.orzdba_monitor.sh脚本使用 ./orzdba_monitor.sh 主要是用nohup同时在后台调用orzdba,启动下面三个命令 [root@node02 scripts]# p ...

  2. 设计模式——单例模式(C++)

    一: 饿汉式单例: 静态区初始化instance,然后通过getInstance返回.这种方式没有多线程的问题,是一种以空间换时间的方式,不管程序用不用,都会构造唯一的实例. #pragma once ...

  3. 第一个PyQt5窗口

    1.使用pycharm,生成UI文件 右键->External Tools->QtDesigner 选择Main Window创建一个窗体,从右边拖动组件到窗体上,保存路径到自己的工程目录 ...

  4. 5月11日上课笔记-js简介

    一.js 1.javascript简介: 是一门脚本语言(弱类型编程语言)(php是脚本语言) 编程语言如java,先编译后运行 脚本语言不需要编译 作用: 表单验证 页面特效 语法:和Java类似, ...

  5. 【BZOJ】2006: [NOI2010]超级钢琴(前缀和+RMQ+堆)

    题目 传送门:QWQ 分析 又不会做....... 显然很好想到前缀和处理一下. 然后考虑最大化结果,直接上st表. 问题来了,然后呢? 怎么做$ length \in [l,r]  $ 呢? 正解是 ...

  6. CocoStudio资源区导入Plist/PSD文件

    这两种文件在使用中和普通文件稍有不同,下作简单介绍.如有不适的地方欢迎批评指正. 首先简单说一下Plist文件,Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,该功能在旧式的Mac OS ...

  7. 广义线性模型(Generalized Linear Models)

    在线性回归问题中,我们假设,而在分类问题中,我们假设,它们都是广义线性模型的例子,而广义线性模型就是把自变量的线性预测函数当作因变量的估计值.很多模型都是基于广义线性模型的,例如,传统的线性回归模型, ...

  8. new及placememt new 异同点

    new与定位new 区别如下: 简单概括: new 分配的内存地址空间来自于heap堆,用完需使用delete 释放内存 定位new 使用的不是heap堆内存,因此不需要使用delete 释放 定位n ...

  9. 腾讯安全反病毒实验室解读“Wannacry”勒索软件

    背景 针对昨日英国医院被攻击,随后肆虐中国高校的 WannaCry 勒索事件,腾讯安全反病毒实验室第一时间给出了深度权威的分析.此次勒索事件与以往相比最大的亮点在于,勒索病毒结合了蠕虫的方式进行传播, ...

  10. JNI 里使用STL

    JNI里的c或者c++ 调用stl 的时候,比如引入map头文件: #include <map> 在cygwin使用NDK编译的时候,会提示: fatal error:map: No su ...