JavaScript中的常见类型: number string boolean object null undefined.
判断一个变量的类型可以使用的方法:
1. typeof方法 : 可以判断 number string boolean object function undefined 但是对于具体的Object类无法细分是Array还是Date,以及自定义的对象类型。
实例代码展示:
var str = []; typeof str == "object"; //true
2. instanceOf 这个可以判断变量的具体对象类型 但是根据他的含义对于继承关系的无法区别开。
示例代码展示:
var person = function(name){this.name =name}; var author = function(name,age){thia.name=name;this.age = age}; author.prototype = new person(); alert(new author() instanceof person) //TRUE
3. constructor属性
什么事constructor属性 : 来历 和prototype的关系
javascript在创建一个函数F是会给函数添加一个prototype的引用执行一个原型对象,而这个对象有一个属性 constructor指向这个函数。这样就形成了循环引用。而利用这个函数创建出来的对象并没有constructor属性,只 是它的prototype指向了F.prototype.
constructor属性存在的问题
对于不同的iframe相同的类型也会指向不同的构造函数。
4. 鸭式辨型
思想: 如果一直动物既会鸭子的走路 又会鸭叫 就认为它是鸭子。
实例代码:
isArray : function(object){ if(typeof object == "object"&& "splice" in object&&"join" in object){ return true; } return false; }
缺点: 但是如果一个对象恰好有这些属性就会判断错误。
示例代码:
var people = new People(); people.prototype = { splice : function(){}, join : function(){} };
5. toString 这个方法是Object中的原生方法
例如: var time = ["wang","cheng"];
alert(Object.prototype.toString.call(time)); // 【object Array】