JavaScript中JSON的处理心得

简介: 一门语言用到深处,就避免不了要对数据的类型进行准确判断,并针对其类型做正确处理。抛开在Web前端环境不谈,从一门独立编程语言的角度来看js,你就会感受到对js中数据类型的理解有多么重要。禁止直接多级访问对象属性,必须一级一级访问;如abc.

一门语言用到深处,就避免不了要对数据的类型进行准确判断,并针对其类型做正确处理。

抛开在Web前端环境不谈,从一门独立编程语言的角度来看js,你就会感受到对js中数据类型的理解有多么重要。

  1. 禁止直接多级访问对象属性,必须一级一级访问;如abc.d这样是不会造成报错的,但abc.d.e可能会造成异常
  2. 在继续往里面访问时,先用一个类型分析函数分析一下

例如:

/**
 * 判断给定对象的类型,返回字符串格式的名称
 * @param {Object} obj
 * @returns {String}
 */
var parseType = function (obj) {
    var type = typeof obj;
    if ("object" === type) {
        if (obj) {
            if (obj instanceof Array) {
                return "array";
            }
            if (obj instanceof Object) {
                return type;
            }
            var native_obj = Object.prototype.toString.call(obj);
            if ("[object Window]" === native_obj) {
                return "object";
            }
            if ("[object Array]" === native_obj || "number" === typeof obj.length && "undefined" !== typeof obj.splice && "undefined" !== typeof obj.propertyIsEnumerable && !obj.propertyIsEnumerable("splice")) {
                return "array";
            }
            if ("[object Function]" === native_obj || "undefined" !== typeof obj.call && "undefined" !== typeof obj.propertyIsEnumerable && !obj.propertyIsEnumerable("call")) {
                return "function";
            }
        } else {
            return "null";
        }
    } else if ("function" === type && "undefined" === typeof obj.call) {
        return "object";
    }
    return type;
};

//示例

var abc = {};
console.log(parseType(abc.type));
console.log(parseType(abc.type.native_obj));

在nodejs环境执行:

undefined
/Users/jixxxxxx/Web/js/type_ha.js:32
console.log(parseType(abc.type.native_obj));
                              ^

TypeError: Cannot read property 'native_obj' of undefined
    at Object.<anonymous> (/Users/jixxxxxx/Web/js/type_ha.js:32:31)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Function.Module.runMain (module.js:457:10)
    at startup (node.js:138:18)
    at node.js:974:3
目录
相关文章
|
17天前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
3月前
|
XML JSON JavaScript
|
3月前
|
JSON JavaScript 前端开发
JavaScript 如何对 JSON 数据进行冒泡排序?
JavaScript 如何对 JSON 数据进行冒泡排序?
51 0
|
4月前
|
JSON JavaScript 前端开发
前端 ex2json 用于 vue/react/js 将 xls、xlsx、csv 文件转成 json 数组
前端 ex2json 用于 vue/react/js 将 xls、xlsx、csv 文件转成 json 数组
93 0
|
4月前
|
JSON JavaScript API
Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)
Node.js(nodejs)对本地JSON文件进行增、删、改、查操作(轻车熟路)
|
4月前
|
JSON JavaScript 数据格式
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
63 0
|
2月前
|
JSON JavaScript 前端开发
Python之JavaScript逆向系列——接口JSON信息获取与操作
Python之JavaScript逆向系列——接口JSON信息获取与操作
51 0
|
3月前
|
JSON JavaScript Android开发
JS生成JSON字符串---autojs pro 篇
JS生成JSON字符串---autojs pro 篇
30 0
|
3月前
|
JSON 资源调度 JavaScript
Node.js专题讲解 第2期 package.json
Node.js专题讲解 第2期 package.json
57 0
|
3月前
|
JSON 前端开发 JavaScript
将 JavaScript 对象或值转换为 JSON 字符串:JSON.stringify()
将 JavaScript 对象或值转换为 JSON 字符串:JSON.stringify()
72 3