在 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 本身是没有这个方法的,那么肯定就是继承而来的