var obj5 = {a:200, b:200, c:true};
var dataT = 'string' || 'number' || 'boolean' ;
obj5.notType = function(){
  for (var p in this){
    if(typeof(this[p]) == dataT){
      alert("have datatype");}
    }
};
obj5.notType();  // doesn't show alert


在这里,我需要检查所有对象属性数据是否为有效数据类型,但是我无法实现。有人可以帮我吗?

最佳答案

根据表达式的计算结果,不能将表达式分配给变量。

'string' || 'number' || 'boolean' ;的计算结果为'string',因此您始终进行测试以查看该值是否为字符串。

而是将数据类型名称存储在数组中。然后使用indexOf查看是否存在匹配项。

var dataT = ['string', 'number', 'boolean'] ;




if ( dataT.indexOf(typeof this[p]) > -1 ) {

09-19 05:41