日期:2014-05-16 浏览次数:20412 次
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】
?
?