//var 变量X --> 对象 --> 构造器 --> 原型对象
function Person(){};
var stu = new Person();
//var stu = new Person.constructor();//等效 //instanceof:用来确定一个实例是否是由特定函数构造器所创建的;还可以用于判断函数是否继承了其原型链中任何对象(必须要了解:原型链)
stu instanceof Person;//true
typeof stu; // "object"
stu.prototype; //undefined
stu.constructor; // f Person(){}

var 变量X --> 对象 --> 构造器 --> 原型对象

instanceof:

    1.用来确定一个实例是否是由特定函数构造器所创建的;

    2.还可以用于判断函数是否继承了其原型链中任何对象(必须要了解:原型链)

function Person(){this.name};
function Student(){this.school};
Student.prototype = new Person();//原型链,实现继承
/*
注意:
强烈不推荐: 父类原型直接赋值给子类原型,否则子类原型上的任何修改都将会影响到父类的原型,因为他们是同一个对象
但也有的好处:所有原型中继承的函数都是实时更新的(live-update)
Eg:Student.prototype = Person.prototype; */ var stu = new Student();
console.log("stu instanceof Student:",stu instanceof Student);//true
console.log("stu instanceof Person:",stu instanceof Person);//true //////////////////////|分隔符|/////////////////////
function a(){}
(new a()) instanceof Function //false function a(){}
(new a()) instanceof a // true function a(){}
(new a()) instanceof Object // true

 

hasOwnProperty(item):

  objectInstance.hasOwnProperty(item))//用于判断一个属性是否是对象实例定义的,还是从原型导入的 

//扩展:对JavaScript原生对象的扩展
//原理:原型对象
Object.prototype.keys = function(){
var keys = [];
for(var item in this)
if(this.hasOwnProperty(item))//用于判断一个属性是否是对象实例定义的,还是从原型导入的
keys.push(item);
return keys;
} var obj = {"name":"johnny","age":21};
obj.keys();//["name"."age"]

ECMAScript中的(六大)基本数据类型:

1.简单数据类型

  Undefined、Null、Boolean、Number、String

2.复杂数据类型

  Object

备注:

  ECMAScript不支持任何创建自定义的机制,而所有值都最终都将是上述6种数据类型之一。

  但由于ECMAScript数据类型具有动态性,因此便没有再定义其他数据类型的必要了。

//变量的动态性:这意味着相同的变量可用作不同的类型:
var x // x 为 undefined
var x = 6; // x 为数字
var x = "Bill"; // x 为字符串

 typeof(A):检测给定变量的数据类型----typeof

函数对象:typeof(function a(){}) //"function"
  说明:
    1.在safari、chrome中,返回“function”,其他浏览器中返回“object”。
    2.从技术角度讲,函数在ECMAScript中是对象,不是一种数据类型。
    3.然而,函数也确实有一些特殊的属性。因此通过typeof操作符区分函数和其他对象也是必要的。   对象:typeof({}) //"object"
typeof(null) //"object"
数组对象:typeof([]) //"object" undefined:typeof(undefined) //"undefined"(便是变量未定义,也可对某变量赋undefined为具体值)
  说明:
    1.undefined派生自null
    2.关于四大值属性(Infinity、NaN、undefined、null字面量),详见MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects 字符串:typeof("") //"string"
数值:typeof(34) // "number"
typeof(NaN) // "number"
布尔:typeof(true) //"boolean"

参考文献

JavaScript之原型|typeof|instanceof的更多相关文章

  1. JavaScript的原型继承

    JavaScript是一门面向对象的语言.在JavaScript中有一句很经典的话,万物皆对象.既然是面向对象的,那就有面向对象的三大特征:封装.继承.多态.这里讲的是JavaScript的继承,其他 ...

  2. javascript prototype原型链的原理

    javascript prototype原型链的原理 说到prototype,就不得不先说下new的过程. 我们先看看这样一段代码: <script type="text/javasc ...

  3. 理解JavaScript的原型链

    1. 什么是对象 在JavaScript中,对象是属性的无序集合,每个属性存放一个原始值.对象或函数. 1.1 创建对象 在JavaScript中创建对象的两种方法: ① 字面上: var myObj ...

  4. 从问题入手,深入了解JavaScript中原型与原型链

    从问题入手,深入了解JavaScript中原型与原型链 前言 开篇之前,我想提出3个问题: 新建一个不添加任何属性的对象为何能调用toString方法? 如何让拥有相同构造函数的不同对象都具备相同的行 ...

  5. 深入理解JavaScript系列:史上最清晰的JavaScript的原型讲解

    一说起JavaScript就要谈的几个问题,原型就是其中的一个.说了句大话,史上最清晰.本来是想按照大纲式的行文写一下,但写到后边感觉其实就一个概念,没有什么条理性,所以下面就简单按照概念解释的模式谈 ...

  6. 【面试必备】javascript的原型和继承

    原型.闭包.作用域等知识可以说是js中面试必考的东西,通过你理解的深度也就能衡量出你基本功是否扎实.今天来复习一下javascript的原型和继承,虽说是老生常谈的话题,但对于这些知识,自己亲手写一遍 ...

  7. JavaScript - 基于原型的面向对象

    JavaScript - 基于原型的面向对象 1. 引言 JavaScript 是一种基于原型的面向对象语言,而不是基于类的!!! 基于类的面向对象语言,比如 Java,是构建在两个不同实体的概念之上 ...

  8. javaScript系列 [04]-javaScript的原型链

    [04]-javaScript的原型链 本文旨在花很少的篇幅讲清楚JavaScript语言中的原型链结构,很多朋友认为JavaScript中的原型链复杂难懂,其实不然,它们就像树上的一串猴子. 1.1 ...

  9. JavaScript prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

随机推荐

  1. Linux文件权限属性后面有个点

    坑啊,新上的机器,监控怎么都不好使,各种报错说:没有权限 什么情况? 仔细查看,发现文件权限属性后面怎么多了个点,类似如下: 这是什么? 原来: 开启了SELinux功能的Linux系统就会有这个点. ...

  2. java 里面的 native 方法

    第一篇: 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method   简单地讲,一个Native Meth ...

  3. ubuntu 16.04 samba服务搭建

    一:安装 1. sudo apt-get install samba 有询问Yes的地方Yes就行. 无法安装samba 执行 sudo apt-get update 2.等待安装完成,进入配置文件目 ...

  4. Cuba获取属性文件中的配置

    最直接的办法是,使用AppContext.getProperty("cuba.trustedClientPassword"); 可以获取到系统中的web模块下的wep-app.pr ...

  5. 自学Python2.1-基本数据类型-字符串str(object) 上

    自学Python之路 自学Python2.1-基本数据类型-字符串str(object) 上 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串 ...

  6. ST表与树状数组

    ST表  st表可以解决区间最值的问题.可以做到O(nlogn)预处理 ,O(1)查询,但是不支持修改. st表的大概思路就是用st[i][j]来表示从i开始的2的j次方个树中的最值,查询时就从左端点 ...

  7. javascript高级程序设计第二章知识点提炼

    这是我整理的javascript高级程序设计第二章的脑图,内容也是非常浅显与简单.希望您看了我的博客能够给我一些意见或者建议.

  8. mapping生成sam文件时出现[mem_sam_pe] paired reads have different names错误

    用以下命令修复: bbrename.sh in1=read1.fq in2=read2.fq out1=renamed1.fq out2=renamed2.fq bbrename.sh 下载地址网上自 ...

  9. 将make的输出重定向到文件(转)

    原文:将make的输出重定向到文件 [用法] 1.想要把make输出的全部信息,输出到某个文件中,最常见的办法就是:make xxx > build_output.txt此时默认情况是没有改变2 ...

  10. 2018.9南京网络预选赛(J)

    传送门:Problem J https://www.cnblogs.com/violet-acmer/p/9720603.html 变量解释: need[ i ] : 第 i 个房间含有的旧灯泡个数. ...