关于 JavaScript 数据类型判断

      在 JavaScript 中,有 undefined、null、number、string、boolean 五种基本数据类型,另外,有一种复杂数据类型 object ,类似于 C# 中值类型、引用类型。

     在 JavaScript 中,判断一个变量的数据类型(仅限于基本类型),可以通过 typeof 操作符来进行 , 返回一个字符串。

     

typeof(undefined)        // “undefined”
typeof(null)              // "object"
typeof(3)                 // "number"
typeof("abc")             //  “string”
typeof([])                  // "object"
typeof(function test() {})   // "function"

       在 JS 中,函数也是一种对象,  JavaScript 中有 String、Object、Boolean、Number、Date、Error 等内置函数对象。

     

 创建对象的可通过  new 构造函数名()实现。

 var array=new Array() ;  // 语法糖 []

 var obj=new Object();   // 语法糖 {}

      

     而在 JavaScript 中判断引用类型 可采用 instanceof 进行判断   ( obj  instanceof  constructor  )  obj :需判断对象  constructor:函数名   返回值为 boolean     用于判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上

    

    console.log([] instanceof Array) // true 

    console.log(Object instanceof Function) // true

    console.log(Object instanceof Object)     // true 

  

   JavaScript 中原型:在 JS 中通过原型来实现继承,在 JS  中没有类的概念。 

在 JS 中每个 JS 对象都有一个默认 _proto_ 隐式属性(在 ECMASCRIPT 5 ,可通过 Object.getPrototypeof(obj) 方法获取对象原型 )

而该隐式原型等于创建该对象构造函数的 prototype 属性 ,每当对身自身查找方法属性时,如果在本身查找不到时,就会沿着该原型进行查找,

如果在该原型中查找不到,继续沿着该原型的原型往上进行查找 ...... 即形成原型链, 最后查找到 Object.prototype 为止,

Object.prototype._proto_ 值为 null。

obj._proto_===Object.getPrototypeof(obj)===constructor.prototype

 其中 obj 为对象  constructor 为创建 obj 的构造函数

  

    var obj={Name:"王尼玛",Age:20,Gender:true};

    console.log(obj.Name) ; //    JS 属性方法查找规律,首先去自身查找 Name 属性 ,如果找到就不在往上查找。

    console.log(obj.toString()); //  obj 本身是没有这个方法的,那么肯定就是继承而来的

原文地址:https://www.cnblogs.com/Lumia1020/p/4843662.html